Jump to content
  • 0

spooky refine iro system


shinz

Question


  • Group:  Members
  • Topic Count:  6
  • Topics Per Day:  0.00
  • Content Count:  10
  • Reputation:   0
  • Joined:  03/07/12
  • Last Seen:  

hello, i found great script here, that an event with refining and rewards :)

 

i need help to custom the script like an IRO spooky machine event :) so the refine should automatic untill it break. any help for this? thanks :)

 

the current script is made by Lil Trol and the code is like this :

/////////////////////////////////////////////////////////////////////////
//    SPOOKY NPC                                                      //
//    LIL TROLL//COLDFIRE                                              //
/////////////////////////////////////////////////////////////////////////
//    RATHENA SCRIPT                                                   //
//---------------------------------------------------------------------//
//    Version 1                                                        //
//    Features:	( REFINE EVENT )							 //
//    - When a piece of setted item/equip is break he will get prize.  //
//    - The players can also claim their reward if they wanted their   //
//      item to be saved and exchange to prize but the prize pool      //
//      will be demoted to lower refine break prize.                   //
//    - The piece of equip can be set to a certain chance rate of      //
//      success or derefine each try.                                  //
//    - In every min/hour of configuration that is set to the npc      //
//      it will unhide/hide.                                           //
//    - Set your own prize, rates, equipslot, equip to be used, etc.   // 
//      its very easy to configure.                                    //
//    - Atcommand "Refine" is used to create random desirable rates.   //
/////////////////////////////////////////////////////////////////////////
// You can remove punishment if you want just put "//" before callfunc "Punishment";
payo2,107,101,4script	Spooky	63,{
function v;
function x;
function z;
function y;
		goto DoubleProtection;				// Double check set reset.. so that set again and again..  - To prevent abuse of refining.
		DoubleProtection:
		goto MainMenu;
		MainMenu:
		if(#Spooky == 0 ) {					// just mprove the dialogue.. ok? 
			mes .sname$;
			mes "Hello "+strcharinfo(0)+"!";
			mes "Im here to give you a `"+x(.s[0])+"`. I will also refine it for free. I`snt that interesting?";
			next;
			mes .sname$;
			mes "Yes I knew you think it was awesome!";
			next;
			mes .sname$;
			mes "Also, I will give you prize for each every successful refine or break of `"+x(.s[0])+"`. Isnt that great?";
			next;
			mes .sname$;
			mes "Now what do you think doing? Do you want to grab the item or not?";
			next;
			switch(select("[ Yes,sure! ]:[ No,bye! ]")) {
			case 1:
				Spooky:
				set #Spooky,1;
			     mes .sname$;
				mes "You really wanted to do this ehh... Alright heres your `"+x(.s[0])+"`.";
				getitem .s[0],.t[0];
				next;
				mes .sname$;
				mes "Ok you got `"+x(.s[0])+"` please equip that. And i will unequip all of your equipments. Then talk to me again ok?";
				close2;
				nude;
				break;
			case 2:
				mes .sname$;
				mes "Its not my loss anyways! (XD) Have fun!";
				close2;
				callfunc "Punishment";
				break;
			}	
		}
		if(#Spooky == 1 ) {
			goto PrizePerRefine;
			PrizePerRefine:
				mes .sname$;
				mes "Lets start refining the `"+x(.s[0])+"`! Would you like to proceed?";
				next;
				switch(select("[ Yeah lets proceed! ]:[ Wait a bit! ]")) {
					case 1:
						set #Spooky,2;
						mes .sname$; mes "Ok talk to me again! I do prepare a bit.";
						close;
					case 2:
						mes .sname$;
						mes "I really dont like to wait.. See you the other way arround!";
						close2;
						callfunc "Punishment";
				}
		}
		if(#Spooky == 2 ) {
			goto DoubleCheck;
			DoubleCheck:	// This is important so that equip checking for set can be reset everytime new refine is done! - To prevent abuse of refining! 
			goto	StartRefining;
			StartRefining:	
				setarray .@a[1],256,16,32,2,4,64,8,128,512,1;
				set .@g, getequipid(.p);
				set .@e, getequiprefinerycnt(.p);
				mes .sname$;
				mes "The '"+z(.p)+"' is currently +"+y(.p)+".";
				if(.@e ==1 ) mes "Break Prize is `"+x(.s[1])+":"+.t[1]+"`.";
				if(.@e ==2 ) mes "Break Prize is `"+x(.s[2])+":"+.t[2]+"`.";
				if(.@e ==3 ) mes "Break Prize is `"+x(.s[3])+":"+.t[3]+"`.";
				if(.@e ==4 ) mes "Break Prize is `"+x(.s[4])+":"+.t[4]+"`.";
				if(.@e ==5 ) mes "Break Prize is `"+x(.s[5])+":"+.t[5]+"`.";
				if(.@e ==6 ) mes "Break Prize is `"+x(.s[6])+":"+.t[6]+"`.";
				if(.@e ==7 ) mes "Break Prize is `"+x(.s[7])+":"+.t[7]+"`.";
				if(.@e ==8 ) mes "Break Prize is `"+x(.s[8])+":"+.t[8]+"`.";
				if(.@e ==9 ) mes "Break Prize is `"+x(.s[9])+":"+.t[9]+"`.";
				next;
				set .@m,select(v(1),v(2),v(3),v(4),v(5),v(6),v(7),v(8),v(9),v(10),"Claim Prize");
					if(.@m == 11){
						mes .sname$;  
						if(.@e <= 3) { mes "You can only claim prize when you reach +4 refine!"; close; }
						mes "When you claim the prize, pool of prize that is set to 'when break' will be demoted to lower refine prize.";
						next;
						mes .sname$; mes "Still would you like to claim the prize?";
						next;
						menu "Yes, I do!",Confirm,"No, I want to try again,",Decline;
						Confirm:
							mes .sname$;
							mes .sname$;	
							if(.@e == 9) { mes "Now your prize is `"+x(.s[8])+":"+.t[8]+"`."; 
								getitem(.s[8],.t[8]); unequip .p; sleep2 200; }
							if(.@e == 8) { mes "Now your prize is `"+x(.s[7])+":"+.t[7]+"`."; 
								getitem(.s[7],.t[7]); unequip .p; sleep2 200; }
							if(.@e == 7) { mes "Now your prize is `"+x(.s[6])+":"+.t[6]+"`."; 
								getitem(.s[6],.t[6]); unequip .p; sleep2 200; }
							if(.@e == 6) { mes "Now your prize is `"+x(.s[5])+":"+.t[5]+"`."; 
								getitem(.s[5],.t[5]); unequip .p; sleep2 200; }
							if(.@e == 5) { mes "Now your prize is `"+x(.s[4])+":"+.t[4]+"`."; 
								getitem(.s[4],.t[4]); unequip .p; sleep2 200; }
							if(.@e == 4) { mes "Now your prize is `"+x(.s[3])+":"+.t[3]+"`."; 
								getitem(.s[3],.t[3]); unequip .p; sleep2 200; }
							specialeffect2 611;
							delitem .s,1;
							mes "Congratulations!";
							set #Spooky,4;
							close2;
							goto MainMenu;
						Decline:
							close2;
							goto MainMenu;
					}
					if(.@m != .p || .@g != .s[0] ){
						mes .sname$;
						mes "Pfff.... I only refine `"+x(.s[0])+ "`";
						close;
					}			
					if (getequipid(.p) != .@g || (getequiprefinerycnt(.p) != .@e)) {
						mes .sname$;
						mes "You changed your equipment! Dont you do that to me!";
						close2;
						callfunc "Punishment";
						end;
					}
					set .@f,rand(1,100);
					set .@f,rand(1,100);
					if(.@e ==0 ) {
						if(.@f < .c[0]) {
							next;
							atcommand "@refine "+ .@a[@menu] +" +1";
							mes .sname$; mes "Now its +1 "; mes "When break Prize is : "+x(.s[1])+"";
							next;	
							goto MainMenu;
							close;
						}
						else {
							next;
							mes .sname$; mes "Nothing happend..";	
							goto MainMenu;
							close;
						}
					}
					set .@g, getequipid(.p);
					if(.@e ==1 ) {
						if(.@f < .c[1]) {
							next;
							atcommand "@refine "+ .@a[@menu] +" +1";
							mes .sname$; mes "Now its +2 "; mes "When break Prize is : '"+x(.s[1])+":"+.t[1]+"`";
							next;	
							goto MainMenu;
							close;
						}
						else {
							if(.@f < .d[1] ) {
								unequip .p;
								sleep2 100;
								delitem .@s,1; 
								specialeffect2 155;
								mes .sname$; mes "You only made this far? What an unlucky pip!";
								next; 
								mes .sname$; mes "Here's your prize '"+x(.s[1])+":"+.t[1]+"`.";
								getitem .s[1],.t[1];
								set #Spooky,4;
								close2;	
								goto MainMenu;
							}
							else {
								next;
								mes .sname$; mes "Still you are lucky, "+x(.s[0])+"` is not broke but refine decrease to 1.";
								atcommand "@refine "+ .@a[@menu] +" -1";
								next;	
								goto MainMenu;
								close;
							}
						}
					}		
					if(.@e ==2 ) {
						if(.@f < .c[2]) {
							next;
							atcommand "@refine "+ .@a[@menu] +" +1";
							mes .sname$; mes "Now its +3 "; mes "When break Prize is : '"+x(.s[2])+":"+.t[2]+"`";
							next;	
							goto MainMenu;
							close;
						}
						else {
							if(.@f < .d[2] ) {
								unequip .p;
								sleep2 100;
								delitem .@s,1; 
								specialeffect2 155;
								mes .sname$; mes "You only made this far? What an unlucky pip!";
								next; 
								mes .sname$; mes "Here's your prize `"+x(.s[2])+"`.";
								getitem .s[2],.t[2];
								set #Spooky,4;
								next;	
								goto MainMenu;
								close;
							}
							else {
								next;
								mes .sname$; mes "Still you are lucky, "+x(.s[0])+"` is not broke but refine decrease to 1.";
								atcommand "@refine "+ .@a[@menu] +" -1";
								next;	
								goto MainMenu;
								close;
							}
						}
					}	
					if(.@e ==3 ) {
						if(.@f < .c[3]) {
							next;
							atcommand "@refine "+ .@a[@menu] +" +1";
							mes .sname$; mes "Now its +4 "; mes "When break Prize is : '"+x(.s[3])+":"+.t[3]+"`";
							next;	
							goto MainMenu;
							close;
						}
						else {
							if(.@f < .d[3] ) {
								unequip .p;
								sleep2 100;
								delitem .s,1; 
								specialeffect2 155;
								mes .sname$; mes "You only made this far? What an unlucky pip!";
								next; 
								mes .sname$; mes "Here's your prize `"+x(.s[3])+"`.";
								getitem .s[3],.t[3];
								set #Spooky,4;
								close2;	
								goto MainMenu;
							}
							else {
								next;
								mes .sname$; mes "Still you are lucky, "+x(.s[0])+"` is not broke but refine decrease to 1.";
								atcommand "@refine "+ .@a[@menu] +" -1";
								next;	
								goto MainMenu;
								close;
							}
						}
					}		
					if(.@e ==4 ) {
						if(.@f < .c[4]) {
							next;
							atcommand "@refine "+ .@a[@menu] +" +1";
							mes .sname$; mes "Now its +5 "; mes "When break Prize is : '"+x(.s[4])+":"+.t[4]+"`";
							next;	
							goto MainMenu;
							close;
						}
						else {
							if(.@f < .d[4] ) {
								unequip .p;
								sleep2 100;
								delitem .s,1; 
								specialeffect2 155;
								mes .sname$; mes "You only made this far? What an unlucky pip!";
								next; 
								mes .sname$; mes "Here's your prize `"+x(.s[4])+"`.";
								getitem .s[4],.t[4];
								set #Spooky,4;
								close2;	
								goto MainMenu;
							}
							else {
								next;
								mes .sname$; mes "Still you are lucky, "+x(.s[0])+"` is not broke but refine decrease to 1.";
								atcommand "@refine "+ .@a[@menu] +" -1";
								next;	
								goto MainMenu;
								close;
							}
						}
					}	
					if(.@e == 5 ) {
						if(.@f < .c[5]) {
							next;
							atcommand "@refine "+ .@a[@menu] +" +1";
							mes .sname$; mes "Now its +6 "; mes "When break Prize is : '"+x(.s[5])+":"+.t[5]+"`";
							next;	
							goto MainMenu;
							close;
						}
						else {
							if(.@f < .d[5] ) {
								unequip .p;
								sleep2 100;
								delitem .@s,1; 
								specialeffect2 155;
								mes .sname$; mes "You only made this far? What an unlucky pip!";
								next; 
								mes .sname$; mes "Here's your prize `"+x(.s[5])+"`.";
								getitem .s[5],.t[5];
								set #Spooky,4;
								close2;	
								goto MainMenu;
							}
							else {
								next;
								mes .sname$; mes "Still you are lucky, "+x(.s[0])+"` is not broke but refine decrease to 1.";
								atcommand "@refine "+ .@a[@menu] +" -1";
								next;	
								goto MainMenu;
								close;
							}
						}
					}
					if(.@e == 6 ) {
						if(.@f < .c[6]) {
							next;
							atcommand "@refine "+ .@a[@menu] +" +1";
							mes .sname$; mes "Now its +7 "; mes "When break Prize is : '"+x(.s[7])+":"+.t[6]+"`";
							next;	
							goto MainMenu;
							close;
						}
						else {
							if(.@f < .d[6] ) {
								unequip .p;
								sleep2 100;
								delitem .s,1; 
								specialeffect2 155;
								mes .sname$; mes "You only made this far? What an unlucky pip!";
								next; 
								mes .sname$; mes "Here's your prize `"+x(.s[7])+"`.";
								getitem .s[7],.t[6];
								set #Spooky,3;
								close2;	
								goto MainMenu;
							}
							else {
								next;
								mes .sname$; mes "Still you are lucky, "+x(.s[0])+"` is not broke but refine decrease to 1.";
								atcommand "@refine "+ .@a[@menu] +" -1";
								next;	
								goto MainMenu;
								close;
							}
						}
					}
					if(.@e == 7 ) {
						if(.@f < .c[7]) {
							next;
							atcommand "@refine "+ .@a[@menu] +" +1";
							mes .sname$; mes "Now its +8 "; mes "When break Prize is : '"+x(.s[7])+":"+.t[7]+"`";
							next;	
							goto MainMenu;
							close;
						}
						else {
							if(.@f < .d[7] ) {
								unequip .p;
								sleep2 100;
								delitem .s,1; 
								specialeffect2 155;
								mes .sname$; mes "You only made this far? What an unlucky pip!";
								next; 
								mes .sname$; mes "Here's your prize `"+x(.s[7])+"`.";
								getitem .s[7],.t[7];
								set #Spooky,4;
								close2;	
								goto MainMenu;
							}
							else {
								next;
								mes .sname$; mes "Still you are lucky, "+x(.s[0])+"` is not broke but refine decrease to 1.";
								atcommand "@refine "+ .@a[@menu] +" -1";
								next;	
								goto MainMenu;
								close;
							}
						}
					}
					if(.@e == 8 ) {
						if(.@f < .c[8]) {
							next;
							atcommand "@refine "+ .@a[@menu] +" +1";
							mes .sname$; mes "Now its +9 "; mes "When break Prize is : '"+x(.s[8])+":"+.t[8]+"`";
							next;	
							goto MainMenu;
							close;
						}
						else {
							if(.@f < .d[8] ) {
								unequip .p;
								sleep2 100;
								delitem .s,1; 
								specialeffect2 155;
								mes .sname$; mes "You only made this far? What an unlucky pip!";
								next; 
								mes .sname$; mes "Here's your prize `"+x(.s[8])+"`.";
								getitem .s[8],.t[8];
								set #Spooky,4;
								close2;	
								goto MainMenu;
							}
							else {
								next;
								mes .sname$; mes "Still you are lucky, "+x(.s[0])+"` is not broke but refine decrease to 1.";
								atcommand "@refine "+ .@a[@menu] +" -1";
								next;	
								goto MainMenu;
								close;
							}
						}
					}
					if(.@e == 9 ) {
						if(.@f < .c[9]) {
							next;
							atcommand "@refine "+ .@a[@menu] +" +1";
							mes .sname$; mes "Now its +10 "; mes "Proceed to get your prize!";
							set #Spooky,3;
							next;	
							goto MainMenu;
							close;
						}
						else {
							if(.@f < .d[9] ) {
								unequip .p;
								sleep2 100;
								delitem .s,1; 
								specialeffect2 155;
								mes .sname$; mes "You only made this far? What an unlucky pip!";
								next; 
								mes .sname$; mes "Here's your prize '"+x(.s[9])+":"+.t[9]+"`.";
								getitem .s[9],.t[9];
								set #Spooky,3;
								close2;	
								goto MainMenu;
							}
							else{
								next;
								mes .sname$; mes "Still you are lucky, "+x(.s[0])+"` is not broke but refine decrease to 1.";
								atcommand "@refine "+ .@a[@menu] +" -1";
								next;	
								goto MainMenu;
								close;
							}
						}
					}		
				}	// End Spooky 2
		if(#Spooky == 3 ) {	
			if(.@e >= 10) {
				mes "You really are awesome! You make me believe superhuman exists!.. Good for you! (XD). Here is your prize `"+x(.s[10])+"`:'"+.t[10]+"'.";
				getitem .s[10],.t[10]; unequip .p; sleep2 200; delitem .s,1; set #Spooky,6; specialeffect2 610; close2;
				announce ""+strcharinfo(0)+" made a +10 `"+.s+"` and won `"+x(.s[10])+"`:'"+.t[10]+"'.",bc_all;
				close;
			}
		}	// End Spooky 3			
		if(#Spooky == 4 ) {
			mes .sname$;
			mes "Better luck next time! If there is nextime! LOL!";
			emotion e_heh;
			set #Spooky,5;
			close;
		}	// End Spooky 4
		if(#Spooky == 5 ) {
			mes .sname$;
			mes "I think I do not have any important bable with you today. Come back later and I will give you another "+getitemname(.s[0])+"..";
			close;
		}	// End Spooky 5
		if(#Spooky == 6 ) {
			mes .sname$;
			mes "Congratulations for being the grand winner! Lets see if you can win nextime!..";
			close;
		}	// End Spooky 6
function	v	{ return ""+getequipname(getarg(0))+""; }
function	x	{ return ""+getitemname(getarg(0))+""; }
function	z	{ return ""+getequipname(getarg(0))+""; }
function	y	{ return ""+getequiprefinerycnt(getarg(0))+""; }
OnInit:
set .sname$,"[ Spooky Something? ]"; // You can change the name inside the bars.
		// Dont remove the comas and columns.
setarray .s[0],2102,			// Change this to what ever item the npc will refine. (MUST BE CUSTOM ITEM BOUND FOR BEST RESULT!)
			 501,			// +1 Prize when the equip break.		
			 502,			// +2 Prize when the equip break.
			 503,			// +3 Prize when the equip break.
			 504,			// +4 Prize when the equip break.
			 505,			// +5 Prize when the equip break.
	           506,			// +6 Prize when the equip break.
	           507,			// +7 Prize when the equip break.
	           508,			// +8 Prize when the equip break.
	           509,			// +9 Prize when the equip break.
	           510;			// +10 Prize after successful refining of the equip.
setarray .t[0], 1,				// Amount of item that will refine by the NPC.
	           1,				// +1 Prize amount when the equip break.		
			 1,				// +2 Prize amount when the equip break.
			 1,				// +3 Prize amount when the equip break.
			 1,				// +4 Prize amount when the equip break.
			 1,				// +5 Prize amount when the equip break.
	           1,				// +6 Prize amount when the equip break.
	           1,				// +7 Prize amount when the equip break.
	           1,				// +8 Prize amount when the equip break.
	           1,				// +9 Prize amount when the equip break.
	           1;				// +10 Prize amount after successful refining of the equip.
setarray .c[0], 80,          		 // +1 Chance to refine in %.
			 75,				// +2 Chance to refine in %.
			 70,				// +3 Chance to refine in %.
			 65,				// +4 Chance to refine in %.
			 60,				// +5 Chance to refine in %.	
			 55,				// +6 Chance to refine in %.
			 50,				// +7 Chance to refine in %.
		 	 35,				// +8 Chance to refine in %.
			 20,				// +9 Chance to refine in %.
			 5;				// +10 Chance to refine in %.
setarray .d[0], 35,         	  	// +1 Fail minus refine %.
			 40,				// +2 Fail minus refine %.
			 45,				// +3 Fail minus refine %.
			 50,				// +4 Fail minus refine %.
			 55,				// +5 Fail minus refine %.	
			 60,				// +6 Fail minus refine %.
			 65,				// +7 Fail minus refine %.
		 	 70,				// +8 Fail minus refine %.
			 80,				// +9 Fail minus refine %.
			 85;				// +10 Fail minus refine %.
set .p,3; 					// Slot of desired equip that will be to used, see below for detail.
setarray .gmaid[0],2000000,		// ADD GM ACCOUNT ID HERE. // Auto delete @atcommand of players.
			    2000002;		
/*
EQI_HEAD_TOP (1)          - Upper Headear
EQI_ARMOR (2)             - Armor (Where you keep your Jackets and Robes)
EQI_HAND_L (3)            - What is in your Left hand.
EQI_HAND_R (4)            - What is in your Right hand.
EQI_GARMENT (5)           - The garment slot (Mufflers, Hoods, Manteaus)
EQI_SHOES (6)             - What foot gear the player has on.
EQI_ACC_L (7)             - Accessory 1.
EQI_ACC_R (8)             - Accessory 2.
EQI_HEAD_MID (9)          - Middle Headgear (masks and glasses)
EQI_HEAD_LOW (10)         - Lower Headgear (beards, some masks)			 
*/
enablenpc strnpcinfo(0);
//initnpctimer;
end;
OnMinute00:
    query_sql("DELETE FROM `global_reg_value` WHERE `str` = '#Spooky'");
    set .@size, query_sql("select account_id from `char` where online = 1", .@aid);
    for(set .@i,0; .@i<.@size; set .@i,.@i+1) {
        if(attachrid(.@aid[.@i])){
            set #Spooky,0;
        }    
    }
announce "Spooky Npc Event is now available!",8;
enablenpc strnpcinfo(0);
end;
OnMinute12:
announce "Spooky Npc Event will be gone at 3mins!",8;
end;
OnMinute13:
announce "Spooky Npc Event will be gone at 2mins!",8;
end;
OnMinute14:
announce "Spooky Npc Event will be gone at 1min!",8;
end;
OnMinute15:
announce "Spooky Npc Event will be appear again after one hour!",8;
disablenpc strnpcinfo(0);
end;
OnMinute16:
   	 query_sql("DELETE FROM `global_reg_value` WHERE `str` = '#Spooky'");
    	set .@size, query_sql("select account_id from `char` where online = 1", .@aid);
    	for(set .@i,0; .@i<.@size; set .@i,.@i+1) {
        	if(attachrid(.@aid[.@i])){
            	set #Spooky,0;
        	}    
    	}
end;
OnMinute30:
//OnTimer10000:
    	query_sql("DELETE FROM `global_reg_value` WHERE `str` = '#Spooky'");
   	set .@size, query_sql("select account_id from `char` where online = 1", .@aid);
    	for(set .@i,0; .@i<.@size; set .@i,.@i+1) {
       	if(attachrid(.@aid[.@i])){
         		set #Spooky,0;
        	}    
	}
	for(set .@i,0; .@i<getarraysize(.gmaid); set .@i,.@i+1) {
		if(.@aid!=.gmaid[.@i]){ 
			query_sql "DELETE FROM `log`.`atcommandlog` WHERE `account_id` = '"+.@aid[.@i]+"'";
			debugmes "Atcommand garbage has been deleted!::Lil-Troll :D";
		}
	}
//initnpctimer;
end;
} // End Spooky NPC
function	script	Punishment	{
	atcommand "@nuke "+strcharinfo(0); sleep2 500; atcommand "@raise "+strcharinfo(0); sleep2 500;
	atcommand "@nuke "+strcharinfo(0); sleep2 500; atcommand "@raise "+strcharinfo(0);
	sleep2 500; atcommand "@nuke "+strcharinfo(0);
	return;
}

Thank you before :)

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

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...