Uhm... I´ll try yo explain.
Now you have a configuration part:
//Change to what requirements you want to use
set .@item[0],713,970,607; //Array with items IDs to use (only 1 of them).
//set .@itemq[0],1,3,1; //Uncomment if you want to use different quantities for each item, same order, array with quentities to use.
set .@zeny,100000; //Money required.
set .@result,607; //The obtained item on success.
The first array .@item[0] defines the items ID of the brewing formula. You can put from 1-254 different items separated by ",".
The example are the items configured in your script 713,970,607. But if you only configure this, it will try to get 1 of each item... but why if you want to pick one of this... three of that...
The second (and commented) variable is for that:
//set .@itemq[0],1,3,1;
if you uncomment this, it will take 1 for the first item, 3 for the second and 1 of the third one. They are in the same order
.@item[0],<ITEM ID 1>,<ITEM ID 2>,<ITEM ID 3>...;
.@itemq[0],<ITEM ID 1 QUANTITY>,<ITEM ID 2 QUANTITY>,<ITEM ID 3 QUANTITY>...;
Then another two vars with the zenys required and the ITEM ID of the brew result.
Maybe more than 200 trys is to much and we can limit the imput to max 100. What do you think?
I´m putting some corrections in this new version and with a limit of 100 each try (I think maybe the array vars where not being configured correctly).
Try this:
//======Name========================================
// Potion Brewer NPC
//======Version=====================================
// 1.0
//======Author(s)===================================
// Sandbox
//======Comments====================================
// In loving memory of AstralRO
//==================================================
//Just for fun... don´t know if it will work!
function script int__ {
.@i = getstrlen( .@str$ = getarg(0) ) -3;
.@is_negative = charat( .@str$, 0 ) == "-";
while ( .@i > .@is_negative ) {
.@str$ = insertchar( .@str$, ",", .@i );
.@i -= 3;
}
return .@str$;
}
//Change coordinates
prontera,144,180,3 script Brewho 46,{
//Configuration, items and zenys:
//Change to what requirements you want to use
setarray(.@item[0],713,970,607); //Array with items IDs to use (only 1 of them).
//setarray(.@itemq[0],1,3,1); //Uncomment if you want to use different quantities for each item, same order, array with quentities to use.
set .@zeny,100000; //Money required.
set .@result,607; //The obtained item on success.
mes "[^0000FF Brewho ^000000]";
mes "Hello, I can teach you how to brew! Teach you, teach you how to brew ^000088Astral Beer^000000"; //Change to what kind of potion do you want to brew
menu "Teach me please!",-;
next;
mes "[^0000FF Brewho ^000000]";
mes "Okay, you'll be needing these..";
mes "^000088";
for( .@i = 0; .@i < getarraysize(.@item); .@i++ ){if(.@itemq[.@i]>0){mes ""+getitemname(.@item[.@i])+" x"+.@itemq[.@i]+"";}else{mes ""+getitemname(.@item[.@i])+"";}}
mes "^000000";
mes "Also, a talent fee of "+int__(.@zeny)+" z!";
menu "I've got them master brewer!",-;
next;
mes "(How many tries?)";
mes "Max: 100";
input .@quantity;
next;
if(.@quantity < 1){goto Lnenough;}
if(.@quantity > 100){set .@quantity,100;}
//Checking requirements
for( .@i = 0; .@i < getarraysize(.@item); .@i++ ){if(.@itemq[.@i]>0){if(countitem(.@item[.@i]) < (.@quantity*.@itemq[.@i])){goto Lnenough;}}else{if(countitem(.@item[.@i]) < .@quantity){goto Lnenough;}}}
if(Zeny < .@zeny){goto Lnenough;} //Must match the requirements above.
mes "[^0000FF Brewho ^000000]";
mes "Let's see the results!";
//Uncomment to enable casting effect
progressbar "ffff00",1;
//Deleting the items!
for( .@i = 0; .@i < getarraysize(.@item); .@i++ ){if(.@itemq[.@i]>0){delitem .@item[.@i],(.@itemq[.@i]*.@quantity);}else{delitem .@item[.@i],.@quantity;}}
set Zeny,Zeny-.@zeny;
for( .@i = 0; .@i < .@quantity; .@i++ ){
//Lets goooo with the chances
if(BrewLvl == 0){set @brewchance,rand(1,5);}
if(BrewLvl == 1){set @brewchance,rand(1,4);}
if(BrewLvl == 2){set @brewchance,rand(1,3);}
if(BrewLvl == 3){set @brewchance,rand(1,2);}
if(@brewchance == 1) {
misceffect 305;
set BrewExp,BrewExp+1;
getnameditem .@result,strcharinfo(0); //Change Item ID, Must match the potion to be made!
set .@ok,.@ok+1;
//goto Lsuccess;
} else {
misceffect 306;
set .@ko,.@ko+1;
//goto Lfail;
}
}
//Now let´s see the results
next;
mes "[^0000FF Brewho ^000000]";
//mes "Congratulations! You've succeeded!";
mes "Well, well... let me see.";
mes "You succeeded "+.@ok+" time/s and failed "+.@ko+" time/s.";
if(BrewExp < 10000){dispbottom "You've gained "+.@ok+" Brewing Exp.";}
if(BrewLvl == 0 && BrewExp > 999){ set BrewLvl,1;
dispbottom "Congratulations! Your Brewing Mastery is now Level 1!";
announce strcharinfo(0)+"'s Brewing Mastery reached Level 1!",bc_all,0x00FFFF;
}
else if(BrewLvl == 1 && BrewExp > 4999) { set BrewLvl,2;
dispbottom "Congratulations! Your Brewing Mastery is now Level 2!";
announce strcharinfo(0)+"'s Brewing Mastery reached Level 2!",bc_all,0x00FFFF;
}
else if(BrewLvl == 2 && BrewExp > 9999) { set BrewLvl,3;
dispbottom "Congratulations! Your Brewing Mastery is now Level 3!";
announce strcharinfo(0)+"'s Brewing Mastery reached Max Level!",bc_all,0x00FFFF;
set BrewExp,0; //Comment this if u don´t wanna clean up this var for the player (max lvl so exp not needed)
}
close;
Lnenough:
mes "[^0000FF Brewho ^000000]";
mes "Are you trying to brew me out!?";
close;
}
PS: I could test this on an offline server and seems to be working fine now.