rAthena 아이템을 경험치로 교환하는 NPC
morocc,162, 35,1 script 경험치 자판기 564,{
//반드시 주석의 설명에 따라 설정해 주세요.
//교환할 아이템은 반드시 !!하나 이상!! 그리고 아래와 같은 형식으로 작성해 주세요.
//교환 아이템 ID 01, 아이템 갯수 01, 교환 아이템 ID 02, 아이템 갯수 02, ... , 베이스 경험치, 잡 경험치;
setarray .@exchangeItem0[0], 909,10, 713, 5, 5000, 5000; //젤로피, 10개, 빈병, 5개, 베이스 경험치 5000, 잡 경험치 5000
setarray .@exchangeItem1[0], 913,10, 10000, 9000; //박쥐의 이빨, 10개, 베이스 경험치 10000, 잡 경험치 10000
setarray .@exchangeItem2[0], 914,10, 915, 5, 919, 5, 20000, 20000; //솜털, 10개, 번데기 껍질, 5개, 동물의 가죽, 5개, 베이스 경험치 20000, 잡 경험치 20000
setarray .@exchangeItem3[0], 935, 5, 938, 15, 955, 10, 30000, 25000; //단단한 껍질, 5개, 끈적끈적한 액체, 15개, 벌레의 등껍질, 10개, 베이스 경험치 30000, 잡 경험치 25000
//교환 아이템을 더 추가하려면 위의 변수명에 있는 숫자를 하나 증가시켜서 원하는 만큼 작성합니다.
//ex)
//setarray .@exchangeItem4[0], 501, 10, 1000, 0;
//setarray .@exchangeItem5[0], 501, 10, 1000, 0;
//setarray .@exchangeItem6[0], 501, 10, 1000, 0;
//...
//위의 변수명에 있는 숫자가 증가함에 유의하시고, 아이템 ID, 아이템 수량, ... , 베이스 경험치, 잡 경험치 구조로 작성하세요.
start:
mes "[^0000FF" + strnpcinfo(1) + "^000000]";
mes "사냥하면서 얻은 아이템을 경험치로 교환해 드립니다.";
set .@choose$, "교환 아이템 목록:교환 가능 목록:닫기";
while(1)
{
switch(select(.@choose$))
{
case 1:
next;
mes "[^0000FF" + strnpcinfo(1) + "^000000]";
for(.@i = 0; getd(".@exchangeItem" + .@i + "[0]") != 0; .@i++)
{
.@itemList$ = "";
copyarray .@items[0], getd(".@exchangeItem" + .@i + "[0]"), getarraysize(getd(".@exchangeItem" + .@i));
for(.@j = 0; .@j < getarraysize(.@items); .@j++)
{
if(.@j == (getarraysize(.@items)-2))
{
//보상 경험치 메시지 부분
.@itemList$ = .@itemList$ + "▷ ^009900" + .@items[.@j] + "^000000/^009900" + .@items[.@j++] + "^000000 Base/Job Exp";
break;
} else {
//요구 아이템 메시지 부분
.@itemList$ = .@itemList$ + "[^FF0000" + getitemname(.@items[.@j]) + "^000000 ^0000FF" + .@items[.@j++] + "^000000개] ";
}
}
deletearray .@items[0],getarraysize(.@items);
mes .@itemList$;
dispbottom .@itemList$, ox000000, getcharid(0);
}
break;
case 2:
mes "아래의 교환 가능 목록을 선택하면 경험치로 바로 교환합니다.";
goto exchangeList;
break;
default:
goto bye;
break;
}
}
exchangeList:
while(1)
{
set .@exchangeList$, "";
.@k=1;
for(.@i = 0; getd(".@exchangeItem" + .@i + "[0]") != 0; .@i++)
{
.@itemList$ = "";
copyarray .@items[0], getd(".@exchangeItem" + .@i + "[0]"), getarraysize(getd(".@exchangeItem" + .@i));
for(.@j = 0; .@j < (getarraysize(.@items) - 2); .@j++)
{
if((countitem(.@items[.@j]) >= .@items[.@j+1]))
{
.@itemList$ = .@itemList$ + "[^FF0000" + getitemname(.@items[.@j]) + "^000000^0000FF" + countitem(.@items[.@j]) + "^000000/" + .@items[.@j++] + "개]";
}
else
{
.@itemList$ = "";
break;
}
}
deletearray .@items[0],getarraysize(.@items);
if(.@itemList$ != "")
{
.@exchangeList$ = .@exchangeList$ + .@itemList$ + ":";
.@exchange[.@k]=.@i;
.@k++;
}
}
if(.@exchangeList$ == "")
{
mes "", "교환 가능 아이템 없음";
next;
goto start;
}
.@choice = prompt(.@exchangeList$);
if(.@choice == 255)
goto start;
.@j = getarraysize(getd(".@exchangeItem" + .@exchange[.@choice]));
for(.@i = 0; .@i < (.@j - 2); .@i++)
delitem getd(".@exchangeItem" + .@exchange[.@choice] + "[" + .@i + "]"), getd(".@exchangeItem" + .@exchange[.@choice] + "[" + (.@i++) + "]");
BaseExp = BaseExp + getd(".@exchangeItem" + .@exchange[.@choice] + "[" + (.@j-2) + "]");
JobExp = JobExp + getd(".@exchangeItem" + .@exchange[.@choice] + "[" + (.@j -1) + "]");
message strcharinfo(0), "경험치가 " + getd(".@exchangeItem" + .@exchange[.@choice] + "[" + (.@j-2) + "]") + "/" + getd(".@exchangeItem" + .@exchange[.@choice] + "[" + (.@j -1) + "]") + "만큼 증가하였습니다.";
deletearray .@exchange[0],getarraysize(.@exchange);
}
bye:
next;
mes "[^0000FF" + strnpcinfo(1) + "^000000]";
mes "이용해주셔서 감사합니다.";
close;
end;
}

Nille 님의 최근 댓글
확인~ 2019 09.21 rt 2016 05.08 감사 2016 05.02 실행안된다 2016 04.30 받아볼깨여 2016 04.24