Media Log


1. db폴더 수정....
db폴더에 const.txt에.. 
IG_GiftBoxChina 34 
IG_LottoBox 35 
//밑으로 새로운 그룹 추가 
IG_RedBox 36 
다음에는 
item_redbox.txt를 만들어서 item_group_db.txt 에 임포트 시키던지.. 
item_misc.txt 부분에다 다른 그룹설정처럼 아이템들 적어놓습니다...


 다음은 설정예제입니다..
// redbox
//본섭
36,5137,1//엘리스인형
36,5138,1//매직아이즈
36,5139,1//부용
36,5140,1//예쁜리본
36,5141,1//마리오네트인형
//속성갑옷
36,2345,1//[루시우스]의_화산의_격렬함
36,2347,1//[사피엔]의_바다의_울부짖음
36,2349,1//[에베시]의_태풍의_광폭함
36,2351,1//[클레이토스]의_대지의_갈라짐
2 소스 수정...
map.h에 
enum{ 
IG_BLUEBOX=1, 
IG_VIOLETBOX, //2 
IG_CARDALBUM, //3 
IG_GIFTBOX, //4 

... 
//밑으로 새로운 그룹추가.. 
//오래된 빨간상자 추가 
IG_REDBOX, //36 
MAX_ITEMGROUP, 
} item_group_list; 
이런식으로 정의된곳에 MAX_ITEMGROUP 윗쪽으로 위와같이 추가된것을 써줍니다. 
또 다음..itemdb.c 파일에 
static void itemdb_read_itemgroup(void) 

.... 

함수안에 또 
"Egg Girl", 
"Gift Box China", 
"Lotto Box", 
//밑으로 추가 
"Red Box", 
}; 
후에 컴파일 해줍니다....
다음 item_db.txt에서 
12186,오래된_빨간상자,오래된_빨간상자,2,1500000,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_REDBOX),1; }
수정을 해줍니다..
이러면 구현은 끝입니다...
이런식으로 추가하면 자신만의 상자를 만들거나 스크롤아템도 수정 및 추가 할수 있으니 
서버 만드시는데 조금이나마 도움이 되실껍니다... 

submit

---------------------------------------------

소스를 사용하지 않고 하는 방법이 없을까 해서 한번 만들어봤습니다.
SQL문을 조금 알고있었던게 도움이 되는군요 (query_sql문을 알고는 신세계가 펼쳐졌..)

 - 이 스크립트는 SQL전용 입니다.
 - 이 스크립트는 플레이어가 월드진입을 하면 자동적으로 동작하는 스크립트입니다.
 - 이 스크립트는 해당 계정을 서버리스를 하여도 접근거부를 유지시키는 스크립트입니다.
 - 접근거부를 해제하려면 login 테이블에서 해당 계정의 state 컬럼에 있는 값을 0으로 변경하시면 됩니다.
 - 공지하는 것을 제거하시려면 announce 부분을 제거하시거나 주석처리 하시면 됩니다.
 - login테이블에 state부분이 있다면 모든 버전에서 동작이 가능합니다 (MySQL에 해당 테이블을 확인해주세요).

---------------------------------------------


/////////////////////////////////////////////////////////////////////////////////////////////////////

- script PC_LoginEvent -1,{
/////////////////////////////////////////////////////////////////////////////////////////////////////

 set Max_Account, 1; // 가질 수 있는 '최대 계정의 수'를 설정합니다.

/////////////////////////////////////////////////////////////////////////////////////////////////////
OnPCLoginEvent:
/////////////////////////////////////////////////////////////////////////////////////////////////////

 // 현재 캐릭터의 계정 IP를 변수 String_ip라는 문자변수에 저장합니다.
 // 저장한 IP를 값으로 검색하여 동일한 last_ip를 가진 계정을 count합니다.
 query_sql "SELECT last_ip FROM login WHERE account_id = '" + getcharid(3) + "'", String_ip$;
 query_sql "SELECT count(*) FROM login WHERE last_ip = '" + String_ip$ + "'", Count_Account;

/////////////////////////////////////////////////////////////////////////////////////////////////////
 // 설정한 '최대 계정의 수'와 검색된 IP의 갯수를 비교합니다.
 if(Count_Account > Max_Account)
 {
  //공지부분.
  announce "플레이어 " + strcharinfo(0) + "님(" + String_ip$ + ")이 갖고 있는 계정의 갯수는 모두 " + Count_Account + "개 입니다.",8;
  announce "갖고있는 모든 계정을 블록시킵니다.",8;

  // 캐릭터 강퇴부분.
  // @킥  <- 이 부분을 해당 Athena에 맞는 명령어로 설정해주세요.
  //         kA일 경우: @킥
  //    eA일 경우: @kick
  //         제가 올린 한글 eA14251일 경우: @킥 또는 @강퇴
  //         ex) ea일 경우,
  //         atcommand strcharinfo(0)+":@kick "+ strcharinfo(0);
  atcommand strcharinfo(0)+":@킥 "+ strcharinfo(0);

  // 실제 DB에 계정의 상태를 변경.
  // String_ip에 저장된 IP를 가진 모든 계정의 상태를 99로 만들어서
  // 다음 로그인부터는 '서버 접근 거부'라는 메세지를 출력하게금 합니다.
  query_sql "UPDATE login SET state = '99' WHERE last_ip = '" + String_ip$ + "'";

  // ipbanlist 테이블을 빌려 접근거부 된 계정의 목록을 입력하는 곳입니다.
  // 뒤에 Account exceed MAX_Account에 있는 내용을 적절히 변경해주세요.
  // 영어로 작성한 이유는 혹시나 SQL오류가 날까봐 적어뒀습니다.
  // euckr에서는 한글로 해도 오류가 나질 않더군요. 둘 중에 하나를 써주세요.
  //query_sql "INSERT ipbanlist (list, btime, rtime, reason) VALUES ('" + String_ip$ + "', sysdate('yyyy/mm/dd'), '2099-01-01', '계정 갯수 어김')";
  query_sql "INSERT ipbanlist (list, btime, rtime, reason) VALUES ('" + String_ip$ + "', sysdate('yyyy/mm/dd'), '2099-01-01', 'Account exceed MAX_Account')";
 }
}

submit

//==============================================================================
// Ragnarok Online - Give town script
// jAthena Script make by 진황
//==============================================================================

rachel.gat,123,144,4 script 아요네::give 894,{
 mes "[운영자]";
 mes "서버를 운영하는 운영자라고 해요~";
 mes "하는일은 아래 메뉴를 참고하세요!";
 next;
 switch(select("레벨별 선물받기","그만둔다")) {
 case 1:
  mes "[운영자]";
  mes "아! 선물 때문에요?";
  mes "레벨별로 지급하고 있습니다..";
  mes "쭉 보도록 하세요~";
  next;
  set @sum,baselevel/10;
  setarray @giveitem$,"","","","","","","","","","";
  for(set @i,0; @i< @sum; set @i,@i+1) {
   set @giveitem$[@i],"^0000FF[LV." +(@i+1)*10+ "] 달성 축하 아이템^000000";
   if(baselevel == 99) {
    set @giveitem$[9],"^0000FF[LV.99] 달성 축하 아이템^000000";
   }
  }
  if(check10 == 1) {
   set @giveitem$[0],"^FF0000[LV.10] 지급완료^000000";
  }
  if(check20 == 1) {
   set @giveitem$[1],"^FF0000[LV.20] 지급완료^000000";
  }
  if(check30 == 1) {
   set @giveitem$[2],"^FF0000[LV.30] 지급완료^000000";
  }
  if(check40 == 1) {
   set @giveitem$[3],"^FF0000[LV.40] 지급완료^000000";
  }
  if(check50 == 1) {
   set @giveitem$[4],"^FF0000[LV.50] 지급완료^000000";
  }
  if(check60 == 1) {
   set @giveitem$[5],"^FF0000[LV.60] 지급완료^000000";
  }
  if(check70 == 1) {
   set @giveitem$[6],"^FF0000[LV.70] 지급완료^000000";
  }
  if(check80 == 1) {
   set @giveitem$[7],"^FF0000[LV.80] 지급완료^000000";
  }
  if(check90 == 1) {
   set @giveitem$[8],"^FF0000[LV.90] 지급완료^000000";
  }
  if(check99 == 1) {
   set @giveitem$[9],"^FF0000[LV.99] 지급완료^000000";
  }
  switch(select(@giveitem$[0],@giveitem$[1],@giveitem$[2],@giveitem$[3],@giveitem$[4],@giveitem$[5],@giveitem$[6],@giveitem$[7],@giveitem$[8],@giveitem$[9])) {
  case 1:
   if(check10 == 1) {
    mes "[운영자]";
    mes "잉? 아이템을 받으셨잖아요?";
    mes "욕심 부리지 말도록 하세요!";
    close;
   }
   mes "[운영자]";
   mes "아이템을 증정해드렸습니다!";
   mes "인벤토리를 확인해보시기 바랍니다~";
   getitem 7803,5;
   getitem 12264,5;
   getitem 12221,30;
   set check10,1;
   close;
  case 2:
   if(check20 == 1) {
    mes "[운영자]";
    mes "잉? 아이템을 받으셨잖아요?";
    mes "욕심 부리지 말도록 하세요!";
    close;
   }
   mes "[운영자]";
   mes "아이템을 증정해드렸습니다!";
   mes "인벤토리를 확인해보시기 바랍니다~";
   getitem 12276,5;
   getitem 12278,5;
   set check20,1;
   close;
  case 3:
   if(check30 == 1) {
    mes "[운영자]";
    mes "잉? 아이템을 받으셨잖아요?";
    mes "욕심 부리지 말도록 하세요!";
    close;
   }
   mes "[운영자]";
   mes "아이템을 증정해드렸습니다!";
   mes "인벤토리를 확인해보시기 바랍니다~";
   getitem 671,3;
   set check30,1;
   close;
  case 4:
   if(check40 == 1) {
    mes "[운영자]";
    mes "잉? 아이템을 받으셨잖아요?";
    mes "욕심 부리지 말도록 하세요!";
    close;
   }
   mes "[운영자]";
   mes "아이템을 증정해드렸습니다!";
   mes "인벤토리를 확인해보시기 바랍니다~";
   getitem 2269,1;
   set check40,1;
   close;
  case 5:
   if(check50 == 1) {
    mes "[운영자]";
    mes "잉? 아이템을 받으셨잖아요?";
    mes "욕심 부리지 말도록 하세요!";
    close;
   }
   mes "[운영자]";
   mes "제니를 증정해드렸습니다!";
   mes "인벤토리를 확인해보시기 바랍니다~";
   set zeny,zeny +500000;
   set check50,1;
   close;
  case 6:
   if(check60 == 1) {
    mes "[운영자]";
    mes "잉? 아이템을 받으셨잖아요?";
    mes "욕심 부리지 말도록 하세요!";
    close;
   }
   mes "[운영자]";
   mes "아이템을 증정해드렸습니다!";
   mes "인벤토리를 확인해보시기 바랍니다~";
   getitem 617,5;
   set check60,1;
   close;
  case 7:
   if(check70 == 1) {
    mes "[운영자]";
    mes "잉? 아이템을 받으셨잖아요?";
    mes "욕심 부리지 말도록 하세요!";
    close;
   }
   mes "[운영자]";
   mes "아이템을 증정해드렸습니다!";
   mes "인벤토리를 확인해보시기 바랍니다~";
   getitem 670,1;
   set check70,1;
   close;
  case 8:
   if(check80 == 1) {
    mes "[운영자]";
    mes "잉? 아이템을 받으셨잖아요?";
    mes "욕심 부리지 말도록 하세요!";
    close;
   }
   mes "[운영자]";
   mes "아이템을 증정해드렸습니다!";
   mes "인벤토리를 확인해보시기 바랍니다~";
   getitem 12189,1;
   set check80,1;
   close;
  case 9:
   if(check90 == 1) {
    mes "[운영자]";
    mes "잉? 아이템을 받으셨잖아요?";
    mes "욕심 부리지 말도록 하세요!";
    close;
   }
   mes "[운영자]";
   mes "아이템을 증정해드렸습니다!";
   mes "인벤토리를 확인해보시기 바랍니다~";
   getitem 12187,1;
   set check90,1;
   close;
  case 10:
   if(check99 == 1) {
    mes "[운영자]";
    mes "잉? 아이템을 받으셨잖아요?";
    mes "욕심 부리지 말도록 하세요!";
    close;
   }
   mes "[운영자]";
   mes "아이템을 증정해드렸습니다!";
   mes "인벤토리를 확인해보시기 바랍니다~";
   getitem 616,3;
   set check99,1;
   close;
  }
 case 2:
  mes "[운영자]";
  mes "필요할때 다시 찾아주세요~";
  mes "그럼.......";
  close;


OnInit:
 waitingroom "서버 정착 도우미",0;
 end;
 }
}

izlude.gat,120,94,5 duplicate(give) 아요네#2 894
prontera.gat,164,173,4 duplicate(give) 아요네#3 894

submit

// 미츠가에의 작품입니다
// 뭐 대단한건 아니지만서리.. 재배포시에 주석 지우면 정말 가만히 안나둡니다
// 모르시는거나 에러나면 엠펠리움에 쪽지 주세요
// RB서버에 처음 테스트 완료했습니다.

prontera.gat,155,275,3 script 금화판매원 888,{
 mes "[금화 판매원]";
 mes "안녕하세요 확성기 판매원 미트라입니다";
 mes "'전쳇말' 을 하기 위해서는 확성기가 필요하답니다.";
 mes "확성기는 2시간에 50개에서 60개정도로 배포되요~";
 mes "저한테 구입하시면 됩니다~";
 next;
 if ($hamount == 0) goto noh;
 set @hcheck,rand(1,5);
 mes "[금화 판매원]";
 mes "한번에 구입하실수 있는 최고 수량은 3개 입니다";
 mes "현재 남은 제고량은 "+ $hamount +"";
 mes "다음 선택문은 한사람이 독점하는걸 막기 위함이니 양해해 주시기 바랍니다.";
 mes "" +@hcheck+ "를 선택해 주시기 바랍니다.";
 menu "1번",c1,"2번",c2,"3번",c3,"4번",c4,"5번",c5;
 
 c1:
 if(@hcheck == 1) goto buy;
 mes "틀렸습니다";
 mes "처음부터 다시해 주시기 바랍니다.";
 close;
 c2:
 if(@hcheck == 2) goto buy;
 mes "틀렸습니다";
 mes "처음부터 다시해 주시기 바랍니다.";
 close;
 c3:
 if(@hcheck == 3) goto buy;
 mes "틀렸습니다";
 mes "처음부터 다시해 주시기 바랍니다.";
 close;
 c4:
 if(@hcheck == 4) goto buy;
 mes "틀렸습니다";
 mes "처음부터 다시해 주시기 바랍니다.";
 close;
 c5:
 if(@hcheck == 5) goto buy;
 mes "틀렸습니다";
 mes "처음부터 다시해 주시기 바랍니다.";
 close;
 
buy:
 mes "[금화 판매원]";
 mes "살 수량을 써 주세요";
 mes "현재 남은 제고량은"+ $hamount +"개 입니다";
 mes "한번에 3개가 최고 수량입니다.";
 next;
 input @BH;
 next;
 mes "입력하신 숫자는 "+@BH+"입니다";
 next;
 
 
 if(@BH==1 ||@BH==2||@BH==3) goto buy2;
  mes "잘못 입력하셨습니다."; 
 close;
 
buy2:
 if(@BH>$hamount || @BH>3 ) goto over;
 if(zeny<(1000*@BH)) goto nozeny;
 getitem 671,@BH;
 set zeny,zeny-1000*@BH;
 set $hamount, $hamount - @BH;
 mes "거래가 완료되었습니다.";
 close;


over:
 mes "[금화 판매원]";
 mes "숫자가 3이 넘었거나";
 mes "입력하신 수량이 남은 수량 보다 많습니다";
 mes "다시 확인해주시기 바랍니다";
 mes "현재 남은 수량은 "+$hamount+"개 입니다";
 close;

nozeny:
 mes "[금화 판매원]";
 mes "꿰~에~~엑 돈이 모자라자나?";
 mes "내가 새라고 무시하는겨?!!";
 mes "워~워~ ";
close;

noh:
 mes "[금화 판매원]";
 mes "현재 남은 수량이 없내요.";
 mes "나중에 와봐요.";
 close;
 }
 
prontera.gat, 116,72,0 script Hamount -1,{


OnClock0000:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock0200:
 set $hamount,rand(5,15);
 Announce "[확성기 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock0400:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock0600:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock0800:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock1000:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock1200:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock1400:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock1600:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock1800:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock2000:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;
OnClock2200:
 set $hamount,rand(5,15);
 Announce "[금화 판매원]금화가 도착하였습니다~ 이번에 도착한 갯수는"+$hamount+"개 입니다~",8;
 End;

}

submit

//======================================================================================
//
//  먹으면 옷이 산타 옷으로 바뀌는 빨간보따리의 효과를 이용한 스크립트 입니다.
//  지속시간은 1시간으로 해두었는데, 산타에게 옷을 벗겠다고 하여 벗어도 되지만...
//  뭐.. 걍 리스 해도 벗어집니다 ㅋ;;
//  간단한 스크립트니까 뭐;; 알아서들 쓰세요 ~_~ 수정할 건덕지도 없을듯;ㅁ;
//
//=====================================================================================



prontera.gat,163,155,4 script 산타 할아버지 718,{


 mes "[산타 할아버지]";
 mes "";
 mes "허허허~";
 mes "메리 크리스마스~~";
 mes "착한 아이에게는 선물을 준단다.";
 mes "넌 착한 아이인듯하니 선물을 주마.";
 mes "뭘 갖고 싶지?";
 next;
 menu "산타 옷을 입고싶어요!",q1,"산타옷 벗을래요!",q2,"그냥 한번 불러봤어요.",cant;
q1:
 mes "[산타 할아버지]";
 mes "";
 mes "허허~ 그래그래, 나같은 옷을 입고 싶다는 게로구나.";
 mes "그래, 여기 있다.";
 mes "즐거운 성탄절 보내거라~";
 sc_start SC_Xmas,3600000,0;
 close;


q2:
 mes "[산타 할아버지]";
 mes "";
 mes "허허~ 그래그래, 재밌게 놀았느냐.";
 mes "지금처럼 착하게 지내면 내년에도 선물을 주마.";
 sc_end SC_Xmas;
 close;


cant:
 mes "[산타 할아버지]";
 mes "";
 mes "즐거운 성탄절에 혼자 게임하는걸 보고 알아보았다."; 
 mes "그래서 네가 애인이 없는거란다."; 
 mes "내년에는 착하게 살거라."; 
 close;



submit

prontera.gat,150,193,4 script 이벤트존 914,{
 set $user1,getmapusers("pvp_n_2-5.gat");
 mes "[이벤트존]";
        mes "이벤트존에 가려고?";
        next;
        mes "[이벤트존]";
        mes "가볼래?";
        next;
        menu "간다!",yes,"안간다!.",cencel;
yes:
        mes "[이벤트존]";
        mes "행운을 빌어~.";
        next;
        menu "이벤트존("+$user1+"명)",chobo,"안갈래요",cencel;


chobo:
       
        warp "pvp_n_2-5.gat",100,133;
        close;


cencel:
        mes "[이벤트존]";
        mes "싫다면 할수없지.";
        close;
       

submit

2614,듀라한아이,15
2616,크리티컬링,20
2637,크은,25
2636,크금,30
2638,피사향포,35
2639,구마향포,40
2640,카프라반지,45
2642,세린의금반지,50
2646,카네이션꽃다발,55
2647,나일로즈,60
2654,세크리파이스링,65
2664,벨카프,70
2665,퇴마의반지,75
2666,희망의등잔,80
2668,여성의영광,85
2669,RJC목걸이,90
2670,그리움의반지,95
2673,용사의빛나는반지,100
2674,명예의반지,105
2675,로드링,110
2629,메긴기오르드,130
2630,브리싱가멘,150

submit

prontera.gat,156,187,4 script 스킬마스터 915,{
  set @Earn, 0;
  mes "[스킬마스터]";
  mes "";
  mes "퀘스트 스킬 서비스를 선택하셨습니다.";
  mes "스킬을 가르쳐드리겠습니다.";
  next;
  if ((Class == 0) || (Class == 4001) || (Class == 4023)) goto Novice_Skill;
  if ((Class == 23) || (Class == 4045)) goto No_Quest_Skill;
  if ((Class == 1) || (Class == 7) || (Class == 14) || (Class == 4002) || (Class == 4008) || (Class == 4015) || (Class == 4024) || (Class == 4030) || (Class == 4037)) goto Swordman_Skill;
  if ((Class == 2) || (Class == 9) || (Class == 16) || (Class == 4003) || (Class == 4010) || (Class == 4017) || (Class == 4025) || (Class == 4032) || (Class == 4039)) goto Magician_Skill;
  if ((Class == 3) || (Class == 11) || (Class == 19) || (Class == 20) || (Class == 4004) || (Class == 4012) || (Class == 4020) || (Class == 4021) || (Class == 4026) || (Class == 4034) || (Class == 4042) || (Class == 4043)) goto Archer_Skill;
  if ((Class == 4) || (Class == 8) || (Class == 15) || (Class == 4005) || (Class == 4009) || (Class == 4016) || (Class == 4027) || (Class == 4031) || (Class == 4038)) goto Acolyte_Skill;
  if ((Class == 5) || (Class == 10) || (Class == 18) || (Class == 4006) || (Class == 4011) || (Class == 4019) || (Class == 4028) || (Class == 4033) || (Class == 4041)) goto Merchant_Skill;
  if ((Class == 6) || (Class == 12) || (Class == 17) || (Class == 4007) || (Class == 4013) || (Class == 4018) || (Class == 4029) || (Class == 4035) || (Class == 4040)) goto Thief_Skill;
  goto No_Class;


 Novice_Skill:
  if ((getskilllv(142) == 1) && (getskilllv(143) == 1)) goto Alread_Earn;
  if (getskilllv(142) == 0) mes "^ff0000응급치료^000000를 배웠습니다.";
  if (getskilllv(142) == 0) skill 142,1,0;
  if (getskilllv(143) == 0) mes "^ff0000죽은척 하기^000000를 배웠습니다.";
  if (getskilllv(143) == 0) skill 143,1,0;
  goto Earn_Skill;


 Swordman_Skill:
  if ((getskilllv(144) == 1) || (getskilllv(145) == 1) || (getskilllv(146) == 1)) set @Earn, 1;
  if ((@Earn == 1) & ((Class == 1) || (Class == 4002) || (Class == 4024))) goto Alread_Earn;
  if (getskilllv(142) == 0) mes "^ff0000응급치료^000000를 배웠습니다.";
  if (getskilllv(142) == 0) skill 142,1,0;
  if (getskilllv(144) == 0) mes "^ff0000이동시 HP 회복^000000을 배웠습니다.";
  if (getskilllv(144) == 0) skill 144,1,0;
  if (getskilllv(145) == 0) mes "^ff0000급소 노리기^000000를 배웠습니다.";
  if (getskilllv(145) == 0) skill 145,1,0;
  if (getskilllv(146) == 0) mes "^ff0000오토 버서크^000000를 배웠습니다.";
  if (getskilllv(146) == 0) skill 146,1,0;
  if ((Class == 7) || (Class == 4008) || (Class == 4030)) goto Knight_Skill;
  if ((Class == 14) || (Class == 4015) || (Class == 4037)) goto Crusader_Skill;
  goto Earn_Skill;


 Knight_Skill:
  if (getskilllv(1001) == 1) goto Alread_Earn;
  if (getskilllv(1001) == 0) mes "^ff0000차지 어택^000000을 배웠습니다.";
  if (getskilllv(1001) == 0) skill 1001,1,0;
  goto Earn_Skill;


 Crusader_Skill:
  if (getskilllv(1002) == 1) goto Alread_Earn;
  if (getskilllv(1002) == 0) mes "^ff0000슈링크^000000를 배웠습니다.";
  if (getskilllv(1002) == 0) skill 1002,1,0;
  goto Earn_Skill;


 Magician_Skill:
  if (getskilllv(157) == 1) set @Earn, 1;
  if ((@Earn == 1) & ((Class == 2) || (Class == 4003) || (Class == 4025))) goto Alread_Earn;
  if (getskilllv(142) == 0) mes "^ff0000응급치료^000000를 배웠습니다.";
  if (getskilllv(142) == 0) skill 142,1,0;
  if (getskilllv(157) == 0) mes "^ff0000에너지 코트^000000를 배웠습니다.";
  if (getskilllv(157) == 0) skill 157,1,0;
  if ((Class == 9) || (Class == 4010) || (Class == 4032)) goto Wizard_Skill;
  if ((Class == 16) || (Class == 4017) || (Class == 4039)) goto Sage_Skill;
  goto Earn_Skill;


 Wizard_Skill:
  if (getskilllv(1006) == 1) goto Alread_Earn;
  if (getskilllv(1006) == 0) mes "^ff0000사이트 블레스터^000000를 배웠습니다.";
  if (getskilllv(1006) == 0) skill 1006,1,0;
  goto Earn_Skill;
 
 Sage_Skill:
  if ((getskilllv(1007) == 1) || (getskilllv(1008) == 1) || (getskilllv(1017) == 1) || (getskilllv(1018) == 1) || (getskilllv(1019) == 1)) goto Alread_Earn;
  set @Ele_Count, 0;
  mes "[스킬마스터]";
  mes "다음 중 두개의 엘레멘탈을";
  mes "선택할 수 있습니다.";
  mes "그럼 첫번째 엘레멘탈을 선택해";
  mes "주시기 바랍니다.";
  next;


  menu "화속성 엘레멘탈 체인지",Fire,"수속성 엘레멘탈 체인지",Water,"풍속성 엘레멘탈 체인지",Wind,"지속성 엘레멘탈 체인지",Ground;


  Fire:
   set @Ele_Count, @Ele_Count + 1;
   set @Element_Fire, 1;
   if (@Ele_Count == 2) goto Earn_Element;
   mes "[스킬마스터]";
   mes "";
   mes "두번째 엘레멘탈을 선택해";
   mes "주시기 바랍니다.";
   next;
   menu "수속성 엘레멘탈 체인지",Water,"풍속성 엘레멘탈 체인지",Wind,"지속성 엘레멘탈 체인지",Ground;


  Water:
   set @Ele_Count, @Ele_Count + 1;
   set @Element_Water, 1;
   if (@Ele_Count == 2) goto Earn_Element;
   mes "[스킬마스터]";
   mes "";
   mes "두번째 엘레멘탈을 선택해";
   mes "주시기 바랍니다.";
   next;
   menu "화속성 엘레멘탈 체인지",Fire,"풍속성 엘레멘탈 체인지",Wind,"지속성 엘레멘탈 체인지",Ground;


  Wind:
   set @Ele_Count, @Ele_Count + 1;
   set @Element_Wind, 1;
   if (@Ele_Count == 2) goto Earn_Element;
   mes "[스킬마스터]";
   mes "";
   mes "두번째 엘레멘탈을 선택해";
   mes "주시기 바랍니다.";
   next;
   menu "화속성 엘레멘탈 체인지",Fire,"수속성 엘레멘탈 체인지",Water,"지속성 엘레멘탈 체인지",Ground;


  Ground:
   set @Ele_Count, @Ele_Count + 1;
   set @Element_Ground, 1;
   if (@Ele_Count == 2) goto Earn_Element;
   mes "[스킬마스터]";
   mes "";
   mes "두번째 엘레멘탈을 선택해";
   mes "주시기 바랍니다.";
   next;
   menu "화속성 엘레멘탈 체인지",Fire,"수속성 엘레멘탈 체인지",Water,"풍속성 엘레멘탈 체인지",Wind;


  Earn_Element:
   if (getskilllv(1007) == 0) mes "^ff0000엘리멘탈 컨버터 제조^000000를 배웠습니다.";
   if (getskilllv(1007) == 0) skill 1007,1,0;
   if (@Element_Fire == 1) mes "^ff0000화속성 엘레멘탈 체인지^000000를 배웠습니다.";
   if (@Element_Fire == 1) skill 1018,1,0;
   if (@Element_Water == 1) mes "^ff0000수속성 엘레멘탈 체인지^000000를 배웠습니다.";
   if (@Element_Water == 1) skill 1008,1,0;
   if (@Element_Wind == 1) mes "^ff0000풍속성 엘레멘탈 체인지^000000를 배웠습니다.";
   if (@Element_Wind == 1) skill 1019,1,0;
   if (@Element_Ground == 1) mes "^ff0000지속성 엘레멘탈 체인지^000000를 배웠습니다.";
   if (@Element_Ground == 1) skill 1017,1,0;
   goto Earn_Skill;



 Archer_Skill:
  if ((getskilllv(147) == 1) || (getskilllv(148) == 1)) set @Earn, 1;
  if ((@Earn == 1) & ((Class == 3) || (Class == 4004) || (Class == 4026))) goto Alread_Earn;
  if (getskilllv(142) == 0) mes "^ff0000응급치료^000000를 배웠습니다.";
  if (getskilllv(142) == 0) skill 142,1,0;
  if (getskilllv(147) == 0) mes "^ff0000화살 만들기^000000를 배웠습니다.";
  if (getskilllv(147) == 0) skill 147,1,0;
  if (getskilllv(148) == 0) mes "^ff0000챠지 애로우^000000를 배웠습니다.";
  if (getskilllv(148) == 0) skill 148,1,0;
  if ((Class == 11) || (Class == 4012) || (Class == 4034)) goto Hunter_Skill;
  if ((Class == 19) || (Class == 4020) || (Class == 4042)) goto Bard_Skill;
  if ((Class == 20) || (Class == 4021) || (Class == 4043)) goto Dancer_Skill;
  goto Earn_Skill;


 Hunter_Skill:
  if (getskilllv(1009) == 1) goto Alread_Earn;
  if (getskilllv(1009) == 0) mes "^ff0000판타즈믹 애로우^000000를 배웠습니다.";
  if (getskilllv(1009) == 0) skill 1009,1,0;
  goto Earn_Skill;


 Bard_Skill:
  if (getskilllv(1010) == 1) goto Alread_Earn;
  if (getskilllv(1010) == 0) mes "^ff0000팽 보이스^000000를 배웠습니다.";
  if (getskilllv(1010) == 0) skill 1010,1,0;
  goto Earn_Skill;


 Dancer_Skill:
  if (getskilllv(1011) == 1) goto Alread_Earn;
  if (getskilllv(1011) == 0) mes "^ff0000매혹의 윙크^000000를 배웠습니다.";
  if (getskilllv(1011) == 0) skill 1011,1,0;
  goto Earn_Skill;


 Acolyte_Skill:
  if (getskilllv(156) == 1) set @Earn, 1;
  if ((@Earn == 1) & ((Class == 4) || (Class == 4005) || (Class == 4027))) goto Alread_Earn;
  if (getskilllv(142) == 0) mes "^ff0000응급치료^000000를 배웠습니다.";
  if (getskilllv(142) == 0) skill 142,1,0;
  if (getskilllv(156) == 0) mes "^ff0000홀리 라이트^000000를 배웠습니다.";
  if (getskilllv(156) == 0) skill 156,1,0;
  if ((Class == 8) || (Class == 4009) || (Class == 4031)) goto Priest_Skill;
  if ((Class == 15) || (Class == 4016) || (Class == 4038)) goto Monk_Skill;
  goto Earn_Skill;


 Priest_Skill:
  if (getskilllv(1014) == 1) goto Alread_Earn;
  if (getskilllv(1014) == 0) mes "^ff0000희생^000000을 배웠습니다.";
  if (getskilllv(1014) == 0) skill 1014,1,0;
  goto Earn_Skill;


 Monk_Skill:
  if ((getskilllv(1015) == 1) || (getskilllv(1016) == 1)) goto Alread_Earn;
  if (getskilllv(1015) == 0) mes "^ff0000진기 주입^000000을 배웠습니다.";
  if (getskilllv(1015) == 0) skill 1015,1,0;
  if (getskilllv(1016) == 0) mes "^ff0000발경^000000을 배웠습니다.";
  if (getskilllv(1016) == 0) skill 1016,1,0;
  goto Earn_Skill;


 Merchant_Skill:
  if ((getskilllv(153) == 1) || (getskilllv(154) == 1) || (getskilllv(155) == 1)) set @Earn, 1;
  if ((@Earn == 1) & ((Class == 5) || (Class == 4006) || (Class == 4028))) goto Alread_Earn;
  if (getskilllv(142) == 0) mes "^ff0000응급치료^000000를 배웠습니다.";
  if (getskilllv(142) == 0) skill 142,1,0;
  if (getskilllv(153) == 0) mes "^ff0000카트 레볼루션^000000을 배웠습니다.";
  if (getskilllv(153) == 0) skill 153,1,0;
  if (getskilllv(154) == 0) mes "^ff0000체인지 카트^000000를 배웠습니다.";
  if (getskilllv(154) == 0) skill 154,1,0;
  if (getskilllv(155) == 0) mes "^ff0000고성방가^000000를 배웠습니다.";
  if (getskilllv(155) == 0) skill 155,1,0;
  if ((Class == 10) || (Class == 4011) || (Class == 4033)) goto Blacksmith_Skill;
  if ((Class == 18) || (Class == 4019) || (Class == 4041)) goto Alchemist_Skill;
  goto Earn_Skill;


 Alchemist_Skill:
  if ((getskilllv(238) == 1) || (getskilllv(243) == 1) || (getskilllv(244) == 1) || (getskilllv(247) == 1)) goto Alread_Earn;
  if (getskilllv(238) == 0) mes "^ff0000생명 윤리^000000를 배웠습니다.";
  if (getskilllv(238) == 0) skill 238,1,0;
  if (getskilllv(243) == 0) mes "^ff0000안식^000000을 배웠습니다.";
  if (getskilllv(243) == 0) skill 243,1,0;
  if (getskilllv(244) == 0) mes "^ff0000콜 호문클루스^000000를 배웠습니다.";
  if (getskilllv(244) == 0) skill 244,1,0;
  if (getskilllv(247) == 0) mes "^ff0000리저렉션 호문클루스^000000를 배웠습니다.";
  if (getskilllv(247) == 0) skill 247,1,0;
  goto Earn_Skill;


 Blacksmith_Skill:
  if ((getskilllv(1012) == 1) || (getskilllv(1013) == 1)) goto Alread_Earn;
  if (getskilllv(1012) == 0) mes "^ff0000수상적인 상술^000000을 배웠습니다.";
  if (getskilllv(1012) == 0) skill 1012,1,0;
  if (getskilllv(1013) == 0) mes "^ff0000탐욕^000000을 배웠습니다.";
  if (getskilllv(1013) == 0) skill 1013,1,0;
  goto Earn_Skill;


 Thief_Skill:
  if ((getskilllv(149) == 1) || (getskilllv(150) == 1) || (getskilllv(151) == 1) || (getskilllv(152) == 1)) set @Earn, 1;
  if ((@Earn == 1) & ((Class == 6) || (Class == 4007) || (Class == 4029))) goto Alread_Earn;
  if (getskilllv(142) == 0) mes "^ff0000응급치료^000000를 배웠습니다.";
  if (getskilllv(142) == 0) skill 142,1,0;
  if (getskilllv(149) == 0) mes "^ff0000모래 뿌리기^000000를 배웠습니다.";
  if (getskilllv(149) == 0) skill 149,1,0;
  if (getskilllv(150) == 0) mes "^ff0000백 슬라이딩^000000을 배웠습니다.";
  if (getskilllv(150) == 0) skill 150,1,0;
  if (getskilllv(151) == 0) mes "^ff0000돌 줍기^000000를 배웠습니다.";
  if (getskilllv(151) == 0) skill 151,1,0;
  if (getskilllv(152) == 0) mes "^ff0000돌 던지기^000000를 배웠습니다.";
  if (getskilllv(152) == 0) skill 152,1,0;
  if ((Class == 12) || (Class == 4013) || (Class == 4035)) goto Assassin_Skill;
  if ((Class == 17) || (Class == 4018) || (Class == 4040)) goto Rogue_Skill;
  goto Earn_Skill;


 Assassin_Skill:
  if ((getskilllv(1003) == 1) || (getskilllv(1004) == 1)) goto Alread_Earn;
  if (getskilllv(1003) == 0) mes "^ff0000소닉 엑셀레이션^000000을 배웠습니다.";
  if (getskilllv(1003) == 0) skill 1003,1,0;
  if (getskilllv(1004) == 0) mes "^ff0000베넘 나이프^000000를 배웠습니다.";
  if (getskilllv(1004) == 0) skill 1004,1,0;
  goto Earn_Skill;


 Rogue_Skill:
  if (getskilllv(1005) == 1) goto Alread_Earn;
  if (getskilllv(1005) == 0) mes "^ff0000클로즈 컴파인^000000을 배웠습니다.";
  if (getskilllv(1005) == 0) skill 1005,1,0;
  goto Earn_Skill;


 Alread_Earn:
  mes "[스킬마스터]";
  mes "";
  mes "이미 스킬을 배우셨습니다.";
  goto no;


 Earn_Skill:
  next;
  mes "[스킬마스터]";
  mes "";
  mes "스킬을 가르쳐 드렸습니다.";
  mes "스킬창을 확인해 보시기 바랍니다.";
  goto no;


 No_Quest_Skill:
  if (Class == 23) set @jobname$, "슈퍼 노비스";
  if (Class == 4045) set @jobname$, "슈퍼 베이비";
  if (Class == 4019) set @jobname$, "크리에이터";
  if (Class == 4041) set @jobname$, "베이비 알케미스트";
  mes "[스킬마스터]";
  mes "";
  mes "죄송합니다. ^0000ff" + @jobname$ + "^000000는";
  mes "퀘스트 스킬이 없습니다.";
  goto no;


 No_Class:
  mes "[스킬마스터]";
  mes "";
  mes "해당되는 직업이 없습니다..";
  goto no;


 no:
  mes "[스킬마스터]";
  mes "";
  mes "그럼 다음에 봐요..^^";
  close;
  end;

submit

//- 몬스터 변신술사 엔피씨
//
//- 제작자 : Cueya
//  수정자 : 키라
//수정 내용 - 명령어 한글화하신분들께 안통하는
//@disguise 를 @변신으로 바꿔서 한글화명령분들
//에게 편리하게 해놨습니다.
//- 자유로운 이동밑 수정 가능합니다.
// 단, 인포마스터같은 곳에는 올리지 말아 주세요!
// 엠펠리움에만 올리도록하겠습니다.
//
//- 처음 사용하실때에는 맵과 좌표를 수정하시고 사용하여 주십시요.
// 맨밑에 보시면 타임설정 엔피씨도 있습니다.
// 그엔피씨도 맵수정해주세요.
//
//- 몬스터 DB에 따라서 띄어쓰기 대처 방식이 틀릴수도 있습니다.
// 어떤 디비에는 띠어쓰기가 아예 없는 디비도 있으니까요.
// 주의하셔서 사용하세요!!

prontera.gat,150,193,4 script 변신술사 894,{
 set @disguisetime,45; // 변신이 지속되는 시간, 1분 - set @disguisetime,5; //
 mes "[ 로더 ]";
 mes "세상은,,넓고..";
 mes "Monster는 많다..";
 next;
 mes "[ 로더 ]";
 mes "세상의 많은 부유물들로";
 mes "변신 마법을 걸어 드립니다.";
 next;
 menu "변신 시켜주세요!",dis,"변신해제",dis1,"취소", clo;

dis:
 mes "[ 로더 ]";
 mes "Monster로의 변신은";
 mes "몬스터의 이름을";
 mes "직접 입력하면 됩니다.";
 mes " ";
 mes " # 주의사항 #";
 mes " 띄어쓰기는 _로";
 mes " 대처해주세요.";
 mes " ";
 mes "예) 마이너_우로스";
 next;
 input $@disguise$;
 atcommand strcharinfo(0)+":@변신 "+$@disguise$;
 addtimer @disguisetime*600000,"Undisg::UnReturn";
 goto disok;

dis1:
 atcommand strcharinfo(0)+":@변신해제 ";
 close;
 
disok:
 mes "[ 로더 ]";
 mes "변신이 완료 되었습니다.";
 close;

clo:
 close;
}

submit

prontera.gat,150,193,3 script 민블루시퍼 717,{
mes "[루시퍼]";
 mes "네~! 루시퍼 입니다!";
 mes "자신이 직접 지속시간을 설정 가능한, 편리한 기능!";
 next;
 if(baselevel >= 255) goto Min;
Lstart_1:
 menu "버프를 받는다",Min;


Min:
 mes "[타키우스]";
 mes "^0056E6속성을 걸어드립니다!";
 mes "그럼 사용할 시간을 입력해 주세요!";
 mes "^0056E6(1은 = 1분 / 1분에 = 10000 Zeny)^000000";
 next;
 input @Buf;
 next;
 if(1 > @Buf) goto no_1;
 mes "[타키우스]";
 mes "입력하신 총 시간은 : ^0056E6["+@Buf+"분]^000000";
 mes "그리고 금액은 : ^0056E6["+@Buf*10000+"Zeny]^000000";
 next;
 menu "받는다",-,"그만둔다",No_2;
 if(Zeny < @Buf*10000) goto no;
 mes "[타키우스]";
 mes "으하하합!!";
 next;
 set Zeny,Zeny-@Buf*10000;
 specialeffect2 313;
 sc_start 32,@Buf*60000,10;  // 민첩성 증가
 sc_start 30,@Buf*60000,10;  // 블레싱
 sc_start 23,@Buf*60000,10; // 집중력향상
 sc_start 29,@Buf*60000,10; // 안젤루스
 sc_start 35,@Buf*60000,10; // 임포시티오마누스 
 sc_start 40,@Buf*60000,10; // 마니피캇 
 sc_start 41,@Buf*60000,10; // 글로리아 
 sc_start 44,@Buf*60000,10; // 웨폰퍼펙션
 sc_start 46,@Buf*60000,10; // 맥시마이즈파워
 sc_start 48,@Buf*60000,10; // 고성방가
 sc_start 72,@Buf*60000,5;  // 무기코팅
 sc_start 73,@Buf*60000,5;  // 쉴드코팅
 sc_start 74,@Buf*60000,5;  // 갑옷코팅
 sc_start 75,@Buf*60000,5;  // 헬름코팅
 sc_start 115,@Buf*60000,10; // 아숨프티오
 sc_start 156,@Buf*60000,10; // 오버트러스트 맥스
 sc_start 120,@Buf*60000,10; // 트루사이트
// sc_start 59,@Buf*60000,10; // 버서크포션
// sc_start 20,@Buf*60000,10; // 프로보크
 sc_start 21,@Buf*60000,10; // 인듀어
// sc_start 36,@Buf*60000,10; // 수프라기움 
// sc_start 38,@Buf*60000,10; // 성체강복 
 sc_start 39,@Buf*60000,10; // 기리에 
 sc_start 45,@Buf*60000,10; // 오버트러스트
// sc_start 81,@Buf*60000,10; // 신의뜻 
// sc_start 95,@Buf*60000,10;  // 폭기
// sc_start 92,@Buf*60000,10; // 루아흐
// sc_start 151,@Buf*60000,10; // 프리저브
 sc_start 125,@Buf*60000,10; // 멜트다운
 sc_start 128,@Buf*60000,10; // 소드리젝트
 close;


no:
 mes "지불하실 금액이 소지하신";
 mes "금액보다 많은 것 같습니다.";
 mes "다시 한번 확인해 주십시오.";
 close;


no_1:
 mes "최소 1 이상의 숫자를 적어야 합니다.";
 mes "다시 한번 말씀 드리지만 이용료는";
 mes "1분 = 10000 Zeny 입니다.";
 close;


No_2:
 mes "왜 갑자기 마음이 바뀌었는지";
 mes "모르겠지만 다음에 또 오시게나.";
 close;

submit