Jump to content
  • 0

Custom refine NPC got Error


hendra814

Question


  • Group:  Members
  • Topic Count:  55
  • Topics Per Day:  0.01
  • Content Count:  1191
  • Reputation:   161
  • Joined:  06/12/12
  • Last Seen:  

please help me fix this script
 
this one can't refine to safe limit for armor only *Solved

prontera,171,226,4	script	Great Refiner	826,{
setarray .@slots[0],1,2,3,4,5,6,9,10; //change into setarray .@slots[0],2,3,4,5,6,7,8,9,10;
for( set .@a,0; .@a < getarraysize(.@slots); set .@a,.@a + 1 ) {
     if( getequipisequiped(.@slots[.@a]) ) {
                  if( .@slots[.@a] == 3 || .@slots[.@a] == 4) {
                       switch( getequipweaponlv(.@slots[.@a]) ) {
                            case 0:
                                 set .@r, 4;
                                 break;
                            default:
                                 set .@r, 8 - getequipweaponlv(.@slots[.@a]);
                                 break;
                            }
                       } else { set .@r, 4; }
		  set .@refinefix,.@r-getequiprefinerycnt(.@slots[.@a]);
          if(getequiprefinerycnt(.@slots[.@a]) < .@r && getequipisenableref(.@slots[.@a]) ) {
               for( set .@i,0; .@i < .@refinefix; set .@i,.@i + 1)
					successrefitem .@slots[.@a];
               }
      }
      sleep2 100;
}

}

and this one for armor slot with shoes, so can't refine armor equipment too *Solved

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 refine.";
end;
}

switch(select( ( getequiprefinerycnt(6) >= .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 "this item is unrefinable.";
end;
}
	if(getequiprefinerycnt(getarg(0)) < .MaxRefine) {
	mes "i'm can't refine this item.";
	mes "you must upgrade ^0000FF+4^000000";
	mes "before bring it to me.";
	end;
	}
	successrefitem (getarg(0));
	message strcharinfo(0),"done.";
	delitem .TicketID,1;
	end;

MaxRefineSystem:
if ( .EquipCheck == 1 && getequipisenableref(getarg(0)) == 0 ){
mes "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),"done.";
	delitem .TicketID,1;
	end;
	
NewRefineSystem:
if ( .EquipCheck == 1 && getequipisenableref(getarg(0)) == 0 ){
mes "this item is unrefinable.";
end;
}
mes "i'm only refine +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),"done.";
end;

}
Edited by hendra814
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  55
  • Topics Per Day:  0.01
  • Content Count:  1191
  • Reputation:   161
  • Joined:  06/12/12
  • Last Seen:  

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 refine.";

end;

}

switch(select( ( getequiprefinerycnt(6) >= .MaxRefine2 || getequipisequiped(6) == 0 )?"":"Upper Headgear [ ^4EEE94"+getequipname(6)+"^000000 ]",

( getequiprefinerycnt(5) >= .MaxRefine2 || getequipisequiped(5) == 0 )?"":"Middle Headgear [ ^4EEE94"+getequipname(5)+"^000000 ]",

( getequiprefinerycnt(4) >= .MaxRefine2 || getequipisequiped(4) == 0 )?"":"Lower Headgear [ ^4EEE94"+getequipname(4)+"^000000 ]",

( getequiprefinerycnt(7) >= .MaxRefine2 || getequipisequiped(7) == 0 )?"":"Armor [ ^4EEE94"+getequipname(7)+"^000000 ]",

( getequiprefinerycnt(8) >= .MaxRefine2 || getequipisequiped(8) == 0 )?"":"Left Hand [ ^4EEE94"+getequipname(8)+"^000000 ]",

( getequiprefinerycnt(9) >= .MaxRefine2 || getequipisequiped(9) == 0 )?"":"Right Hand [ ^4EEE94"+getequipname(9)+"^000000 ]",

( getequiprefinerycnt(3) >= .MaxRefine2 || getequipisequiped(3) == 0 )?"":"Garment [ ^4EEE94"+getequipname(3)+"^000000 ]",

( getequiprefinerycnt(2) >= .MaxRefine2 || getequipisequiped(2) == 0 )?"":"Shoes [ ^4EEE94"+getequipname(2)+"^000000 ]",

( getequiprefinerycnt(1) >= .MaxRefine2 || getequipisequiped(1) == 0 )?"":"Accessory [ ^4EEE94"+getequipname(1)+"^000000 ]",

( getequiprefinerycnt(0) >= .MaxRefine2 || getequipisequiped(0) == 0 )?"":"Accessory [ ^4EEE94"+getequipname(0)+"^000000 ]",

"^FF0000end^000000")) {

Case 1:

if ( .Mode == 0 ) { callsub RefineSystem,6; }

if ( .Mode == 1 ) { callsub MaxRefineSystem,6; }

if ( .Mode == 2 ) { callsub NewRefineSystem,6; }

Case 2:

if ( .Mode == 0 ) { callsub RefineSystem,5; }

if ( .Mode == 1 ) { callsub MaxRefineSystem,5; }

if ( .Mode == 2 ) { callsub NewRefineSystem,5; }

Case 3:

if ( .Mode == 0 ) { callsub RefineSystem,4; }

if ( .Mode == 1 ) { callsub MaxRefineSystem,4; }

if ( .Mode == 2 ) { callsub NewRefineSystem,4; }

Case 4:

if ( .Mode == 0 ) { callsub RefineSystem,7; }

if ( .Mode == 1 ) { callsub MaxRefineSystem,7; }

if ( .Mode == 2 ) { callsub NewRefineSystem,7; }

Case 5:

if ( .Mode == 0 ) { callsub RefineSystem,8; }

if ( .Mode == 1 ) { callsub MaxRefineSystem,8; }

if ( .Mode == 2 ) { callsub NewRefineSystem,8; }

Case 6:

if ( .Mode == 0 ) { callsub RefineSystem,9; }

if ( .Mode == 1 ) { callsub MaxRefineSystem,9; }

if ( .Mode == 2 ) { callsub NewRefineSystem,9; }

Case 7:

if ( .Mode == 0 ) { callsub RefineSystem,3; }

if ( .Mode == 1 ) { callsub MaxRefineSystem,3; }

if ( .Mode == 2 ) { callsub NewRefineSystem,3; }

Case 8:

if ( .Mode == 0 ) { callsub RefineSystem,2; }

if ( .Mode == 1 ) { callsub MaxRefineSystem,2; }

if ( .Mode == 2 ) { callsub NewRefineSystem,2; }

Case 9:

if ( .Mode == 0 ) { callsub RefineSystem,1; }

if ( .Mode == 1 ) { callsub MaxRefineSystem,1; }

if ( .Mode == 2 ) { callsub NewRefineSystem,1; }

Case 10:

if ( .Mode == 0 ) { callsub RefineSystem,0; }

if ( .Mode == 1 ) { callsub MaxRefineSystem,0; }

if ( .Mode == 2 ) { callsub NewRefineSystem,0; }

Case 11:

end;

}

RefineSystem:

if ( .EquipCheck == 1 && getequipisenableref(getarg(0)) == 0 ){

mes "this item is unrefinable.";

end;

}

if(getequiprefinerycnt(getarg(0)) < .MaxRefine) {

mes "I'm can't upgrade this item.";

mes "you must upgrade into ^0000FF+4^000000";

mes "berfore you bring it to me.";

end;

}

successrefitem (getarg(0));

message strcharinfo(0),"done.";

delitem .TicketID,1;

end;

MaxRefineSystem:

if ( .EquipCheck == 1 && getequipisenableref(getarg(0)) == 0 ){

mes "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),"done.";

delitem .TicketID,1;

end;

NewRefineSystem:

if ( .EquipCheck == 1 && getequipisenableref(getarg(0)) == 0 ){

mes "this item is unrefinable.";

end;

}

mes "i'm just upgrade 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),"Done.";

end;

}
prontera,171,226,4 script Great Refiner 826,{

setarray .@slots[0],2,3,4,5,6,7,8,9,10;

for( set .@a,0; .@a < getarraysize(.@slots); set .@a,.@a + 1 ) {

if( getequipisequiped(.@slots[.@a]) ) {

if( .@slots[.@a] == 3 || .@slots[.@a] == 4) {

switch( getequipweaponlv(.@slots[.@a]) ) {

case 0:

set .@r, 4;

break;

default:

set .@r, 8 - getequipweaponlv(.@slots[.@a]);

break;

}

} else { set .@r, 4; }

set .@refinefix,.@r-getequiprefinerycnt(.@slots[.@a]);

if(getequiprefinerycnt(.@slots[.@a]) < .@r && getequipisenableref(.@slots[.@a]) ) {

for( set .@i,0; .@i < .@refinefix; set .@i,.@i + 1)

successrefitem .@slots[.@a];

}

}

sleep2 100;

}

}

 

Edited by Mael
Link to comment
Share on other sites

  • 0

  • Group:  Developer
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  547
  • Reputation:   270
  • Joined:  11/08/11
  • Last Seen:  

Consider using the EQI_* constants instead of hardcoding the numbers.

We wont change them anytime soon again, but that is what constants are for.

 

Take this commit as a reference:

https://github.com/rathena/rathena/commit/6649d2e98dcd615ff79fdc8b47d7a9bdd313cec2

 

There's also a function provided now, which allows you to get the name of the equipment position to build your menu dynamically.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...