try this one
prt_in,61,54,3 script Refiner 826,{
OnUsed:
set .Mode,0; // Refine mode [ 0 = Refine +1 Each time / 1 = Refine to Max Limit ]
set .EquipCheck,1; // Check Equips is refineable or not. [ 0 = Disable / 1 = Enable ]
set .MaxRefine,4; // Max Refine Limit
set .MaxRefine2,7; // Max Refine Limit [ for Mode 2 Max Refine ]
set .TicketID,7539; // Ticket ID
if( countitem(.TicketID) < 1 ){
mes "You don't have "+getitemname(.TicketID)+" to continue this proses.";
end;
}
switch(select( ( getequiprefinerycnt(1) >= .MaxRefine2 || getequipisequiped(1) == 0 )?"":"Headgear [ ^4EEE94"+getequipname(1)+"^000000 ]",
( getequiprefinerycnt(2) >= .MaxRefine2 || getequipisequiped(2) == 0 )?"":"Armor [ ^4EEE94"+getequipname(2)+"^000000 ]",
( getequiprefinerycnt(3) >= .MaxRefine2 || getequipisequiped(3) == 0 )?"":"Left Hand [ ^4EEE94"+getequipname(3)+"^000000 ]",
( getequiprefinerycnt(4) >= .MaxRefine2 || getequipisequiped(4) == 0 )?"":"Right Hand [ ^4EEE94"+getequipname(4)+"^000000 ]",
( getequiprefinerycnt(5) >= .MaxRefine2 || getequipisequiped(5) == 0 )?"":"Garment [ ^4EEE94"+getequipname(5)+"^000000 ]",
( getequiprefinerycnt(6) >= .MaxRefine2 || getequipisequiped(6) == 0 )?"":"Shoes [ ^4EEE94"+getequipname(6)+"^000000 ]",
"^FF0000end^000000")) {
Case 1:
if ( .Mode == 0 ) { callsub RefineSystem,1; }
if ( .Mode == 1 ) { callsub MaxRefineSystem,1; }
if ( .Mode == 2 ) { callsub NewRefineSystem,1; }
Case 2:
if ( .Mode == 0 ) { callsub RefineSystem,2; }
if ( .Mode == 1 ) { callsub MaxRefineSystem,2; }
if ( .Mode == 2 ) { callsub NewRefineSystem,2; }
Case 3:
if ( .Mode == 0 ) { callsub RefineSystem,3; }
if ( .Mode == 1 ) { callsub MaxRefineSystem,3; }
if ( .Mode == 2 ) { callsub NewRefineSystem,3; }
Case 4:
if ( .Mode == 0 ) { callsub RefineSystem,4; }
if ( .Mode == 1 ) { callsub MaxRefineSystem,4; }
if ( .Mode == 2 ) { callsub NewRefineSystem,4; }
Case 5:
if ( .Mode == 0 ) { callsub RefineSystem,5; }
if ( .Mode == 1 ) { callsub MaxRefineSystem,5; }
if ( .Mode == 2 ) { callsub NewRefineSystem,5; }
Case 6:
if ( .Mode == 0 ) { callsub RefineSystem,6; }
if ( .Mode == 1 ) { callsub MaxRefineSystem,6; }
if ( .Mode == 2 ) { callsub NewRefineSystem,6; }
Case 7: end;
}
RefineSystem:
if ( .EquipCheck == 1 && getequipisenableref(getarg(0)) == 0 ){
mes "I can't refine this item.because this item is unrefinable.";
end;
}
if(getequiprefinerycnt(getarg(0)) < .MaxRefine) {
mes "I can't refine this item.";
mes "You must refine to ^0000FF+4^000000";
mes "when you bring to me.";
end;
}
successrefitem (getarg(0));
message strcharinfo(0),"this item successuly upgrade.";
delitem .TicketID,1;
end;
MaxRefineSystem:
if ( .EquipCheck == 1 && getequipisenableref(getarg(0)) == 0 ){
mes "I can't refine this item.because this item is unrefinable.";
end;
}
for ( set .@i,getequiprefinerycnt(getarg(0)); getequiprefinerycnt(getarg(0)) < .MaxRefine; set .@i,getequiprefinerycnt(getarg(0)) ){
successrefitem (getarg(0));
}
message strcharinfo(0),"this item successuly upgrade.";
delitem .TicketID,1;
end;
NewRefineSystem:
if ( .EquipCheck == 1 && getequipisenableref(getarg(0)) == 0 ){
mes "I can't refine this item.because this item is unrefinable.";
end;
}
mes "i just can refine from +4 ~ +7.";
next;
while ( countitem(.TicketID) > 0 && getequiprefinerycnt(getarg(0)) < .MaxRefine ){
successrefitem (getarg(0));
delitem .TicketID,1;
}
while ( countitem(.TicketID) > 1 && getequiprefinerycnt(getarg(0)) > .MaxRefine && getequiprefinerycnt(getarg(0)) < .MaxRefine2 ){
successrefitem (getarg(0));
delitem .TicketID,1;
}
message strcharinfo(0),"this item successuly upgrade.";
end;
}
this is will refine from +4 ~ +7 only and use poring coin to continue refine proses