Jump to content
  • 0

how to add multiple reward item here.


Question

Posted (edited)

im using tr0n's Questboard [1.4.4]

//===== rAthena Script =======================================
//= tr0n's Questboard
//===== By: ==================================================
//= tr0n
//===== Current Version: =====================================
//= 1.4.4
//===== Compatible With: ===================================== 
//= rAthena SVN
//===== Description: =========================================
//= Easily add collection and hunting quests.
//===== Additional Comments: =================================  
// 1.0.0 Release
// 1.1.0 Added zeny reward
// 1.2.0 Rewrote checkmob and killcounter
// 1.3.1 Added level restriction
// 1.3.4 Added Reward Item Amount
// 1.4.4 Added Quest delay
//============================================================

prontera,129,215,5	script	Questboard	857,{
		
	if(c_run==1){
		mes "[^FF7700Questboard^000000]";
		mes "^0000FF"+getd("." + currentquest$ + "_collectionname$")+"^000000";
		mes "--------------------------------";
		for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_collectionitem")); set .@j,.@j+2) {
			mes "^FF0000"+getitemname(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+" - "+countitem(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+"/"+getd("."+currentquest$+"_collectionitem["+(.@j+1)+"]")+" ea.^000000";
		}
		mes "--------------------------------";
		mes "[Reward]";
		mes "Item: ^0000FF"+((getd("." +currentquest$+"_collectionprize"))?getitemname(getd("." +currentquest$+"_collectionprize"))+" - "+getd("." +currentquest$+"_collectionamount")+" ea.^000000":"Nothing^000000");
		mes "Zeny: ^0000FF"+getd("." +currentquest$+"_collectionzeny")+"^000000";
		mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+0+"]")+"^000000";
		mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+1+"]")+"^000000";
		next;
		if(select("Finish:Abort") == 2){
			mes "[^FF7700Questboard^000000]";
			mes "Quest aborted.";
			set currentquest$, "";
			set c_run, 0;
			close;
		}
		goto L_checkitems;
	}
	
	if(h_run==1){
		mes "[^FF7700Questboard^000000]";
		mes "^0000FF"+getd("." + currentquest$ + "_huntingname$")+"^000000";
		mes "--------------------------------";
		for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_huntingmob")); set .@j,.@j+2) {
			set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@j)+"]");
			mes "^FF0000"+strmobinfo(1,getd("."+currentquest$+"_huntingmob["+.@j+"]"))+" - "+getd(currentquest$+"_"+.@currentmob+"_"+(.@j+1)+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+(.@j+1)+"]")+" ea.^000000";
		}
		mes "--------------------------------";
		mes "[Reward]";
		mes "Item: ^0000FF"+((getd("." +currentquest$+"_huntingprize"))?getitemname(getd("." +currentquest$+"_huntingprize"))+" - "+getd("." +currentquest$+"_huntingamount")+" ea.^000000":"Nothing^000000");
		mes "Zeny: ^0000FF"+getd("." +currentquest$+"_huntingzeny")+"^000000";
		mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+0+"]")+"^000000";
		mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+1+"]")+"^000000";
		next;
		if(select("Finish:Abort") == 2){
			mes "[^FF7700Questboard^000000]";
			mes "Quest aborted.";
			for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){
				set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]");
				setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0);
			}
			set currentquest$, "";
			set h_run, 0;
			close;
		}
		goto L_checkmobs;
	}
		
L_questmenu:
	mes "[^FF7700Questboard^000000]";
	mes "Select category:";
	next;
	
	switch(select((.collection)?"Collection Quests":"",
				  (.hunting)?"Hunting Quests":"",
				  "Exit")) {
	
case 1:
	set .@collectmenu$, "";
	for( set .@i,0; .@i < .collectionquestcount; set .@i,.@i+1) {
		if (.@i) set .@collectmenu$,.@collectmenu$+":";
		set .@collectmenu$, .@collectmenu$ + "[" + getd("." +(.@i+1)+"_collectionmin") + " - " + getd("." +(.@i+1)+"_collectionmax") + "] " + getd("." + (.@i+1) + "_collectionname$");
	}
	set .@selection,select(.@collectmenu$);
	if(gettimetick(2) < getd(.@selection + "_collection_delay")){
		set .@time_left, getd(.@selection + "_collection_delay")-gettimetick(2);
		mes "[^FF7700Questboard^000000]";
		if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again.";
		if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again.";
		mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again.";
		close;
	}
	mes "[^FF7700Questboard^000000]";
	mes "^0000FF"+getd("." + .@selection + "_collectionname$")+"^000000";
	mes "--------------------------------";
	for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_collectionitem")); set .@j,.@j+2) {
		mes "^FF0000"+getitemname(getd("."+.@selection+"_collectionitem["+.@j+"]"))+" - "+getd("."+.@selection+"_collectionitem["+(.@j+1)+"]")+" ea.^000000";
	}
	mes "--------------------------------";
	mes "[Reward]";
	mes "Item: ^0000FF"+((getd("." +.@selection+"_collectionprize"))?getitemname(getd("." +.@selection+"_collectionprize"))+" - "+getd("." +.@selection+"_collectionamount")+" ea.^000000":"Nothing^000000");
	mes "Zeny: ^0000FF"+getd("." +.@selection+"_collectionzeny")+"^000000";
	mes "Base EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+0+"]")+"^000000";
	mes "Job EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+1+"]")+"^000000";
	next;
	if(select("Accept:Decline") == 2){
		close;
	}
	if(BaseLevel >= getd("." +.@selection+"_collectionmin") && BaseLevel <= getd("." +.@selection+"_collectionmax"))
	{
		mes "[^FF7700Questboard^000000]";
		mes "Quest accepted.";
		set c_run, 1;
		set currentquest$, .@selection;
		close;
	}
	else
	{
		mes "[^FF7700Questboard^000000]";
		mes "You don't have the required";
		mes "level to do this quest.";
		close;
	}
	
case 2:
	set .@huntmenu$, "";
	for( set .@i,0; .@i < .huntingquestcount; set .@i,.@i+1) {
		if (.@i) set .@huntmenu$,.@huntmenu$+":";
		set .@huntmenu$, .@huntmenu$ + "[" + getd("." +(.@i+1)+"_huntingmin") + " - " + getd("." +(.@i+1)+"_huntingmax") + "] " + getd("." + (.@i+1) + "_huntingname$");
	}
	set .@selection,select(.@huntmenu$);
	if(gettimetick(2) < getd(.@selection + "_hunting_delay")){
		set .@time_left, getd(.@selection + "_hunting_delay")-gettimetick(2);
		mes "[^FF7700Questboard^000000]";
		if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again.";
		if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again.";
		mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again.";
		close;
	}
	mes "[^FF7700Questboard^000000]";
	mes "^0000FF"+getd("." + .@selection + "_huntingname$")+"^000000";
	mes "--------------------------------";
	for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_huntingmob")); set .@j,.@j+2) {
		mes "^FF0000"+strmobinfo(1,getd("."+.@selection+"_huntingmob["+.@j+"]"))+" - "+getd("."+.@selection+"_huntingmob["+(.@j+1)+"]")+" ea.^000000";
	}
	mes "--------------------------------";
	mes "[Reward]";
	mes "Item: ^0000FF"+((getd("." +.@selection+"_huntingprize"))?getitemname(getd("." +.@selection+"_huntingprize"))+" - "+getd("." +.@selection+"_huntingamount")+" ea.^000000":"Nothing^000000");
	mes "Zeny: ^0000FF"+getd("." +.@selection+"_huntingzeny")+"^000000";
	mes "Base EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+0+"]")+"^000000";
	mes "Job EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+1+"]")+"^000000";
	next;
	if(select("Accept:Decline") == 2){
		close;
	}
	if(BaseLevel >= getd("." +.@selection+"_huntingmin") && BaseLevel <= getd("." +.@selection+"_huntingmax"))
	{
		mes "[^FF7700Questboard^000000]";
		mes "Quest accepted.";
		set h_run, 1;
		set currentquest$, .@selection;
		close;
	}
	else
	{
		mes "[^FF7700Questboard^000000]";
		mes "You don't have the required";
		mes "level to do this quest.";
		close;
	}
	
case 3:
	close;
	}
	
L_checkitems:
	for( set .@k,0; .@k < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@k,.@k+2) {
		if(countitem(getd("."+currentquest$+"_collectionitem["+.@k+"]"))>=getd("."+currentquest$+"_collectionitem["+(.@k+1)+"]")){
			set .@checkitem,.@checkitem+2;
		}
	}
	if(.@checkitem<getarraysize(getd("."+currentquest$+"_collectionitem"))){
		mes "[^FF7700Questboard^000000]";
		mes "You don't have everything.";
		close;
	}
	for( set .@delcount,0; .@delcount < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@delcount,.@delcount+2) {
		delitem getd("."+currentquest$+"_collectionitem["+.@delcount+"]"),getd("."+currentquest$+"_collectionitem["+(.@delcount+1)+"]");
	}
	mes "[^FF7700Questboard^000000]";
	mes "Congratulation! Here is your Reward.";
	if(getd("." +currentquest$+"_collectionprize")!=0) getitem(getd("." +currentquest$+"_collectionprize"),getd("." +currentquest$+"_collectionamount"));
	set Zeny,Zeny+getd("." +currentquest$+"_collectionzeny");
	getexp getd("." +currentquest$+"_collectionexp["+0+"]"),getd("." +currentquest$+"_collectionexp["+1+"]");
	setd(currentquest$ + "_collection_delay"),gettimetick(2)+.quest_delay;
	set currentquest$, "";
	set c_run, 0;
	close;
	
L_checkmobs:
	set .@goal, (getarraysize(getd("."+currentquest$+"_huntingmob"))/2);
	for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){
		set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]");
		if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")==getd("."+currentquest$+"_huntingmob["+.@i+"]")){
			set .@checkmonster, .@checkmonster+1;
			if(.@checkmonster==.@goal){
				goto L_checkmobs2;
			}
			continue;
		}
		goto L_checkmobs2;
	}
	
L_checkmobs2:
	if(.@checkmonster<.@goal){
		mes "[^FF7700Questboard^000000]";
		mes "You didn't kill everything.";
		close;
	}
	mes "[^FF7700Questboard^000000]";
	mes "Congratulation! Here is your Reward.";
	for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){
		set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]");
		setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0);
	}
	if(getd("." +currentquest$+"_huntingprize")!=0) getitem(getd("." +currentquest$+"_huntingprize"),getd("." +currentquest$+"_huntingamount"));
	set Zeny, Zeny+getd("." +currentquest$+"_huntingzeny");
	getexp getd("." +currentquest$+"_huntingexp["+0+"]"),getd("." +currentquest$+"_huntingexp["+1+"]");
	setd(currentquest$ + "_hunting_delay"),gettimetick(2)+.quest_delay;
	set currentquest$, "";
	set h_run, 0;
	close;

OnNPCKillEvent:
	if(h_run!=1) end;
	for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){
		if(killedrid==getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]")){
			set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]");
			if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")>=getd("."+currentquest$+"_huntingmob["+.@i+"]")) end;
			setd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount", getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+1);
			dispbottom getd("."+currentquest$+"_huntingname$")+": ["+strmobinfo(1,.@currentmob)+"] ("+ getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+.@i+"]")+")";
			end;
		}
		continue;
	}
	end;
	
OnInit:

	function AddCollection;
	function AddHunting;

	//Activate/Deactive quest categories here
	set .collection, 1;
	set .hunting, 1;
	
	//Quest Delay (seconds)
	//24 hours = 86400 seconds
	set .quest_delay, 0;
	
	//Checks if quests are loaded (prevents out of index)
	if(.questsloaded==1) end;
		set .questsloaded, 1;
		
		//Add Collection Quests here
		//AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...);
		
		
		//Add Hunting Quests here
		//AddHunting("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...);
		
		end;
		

function AddCollection {
	set .collectionquestcount,.collectionquestcount+1;
	setd ("." +.collectionquestcount+"_collectionname$", getarg(0));
	setd ("." +.collectionquestcount+"_collectionmin", getarg(1));
	setd ("." +.collectionquestcount+"_collectionmax", getarg(2));
	setd ("." +.collectionquestcount+"_collectionprize", getarg(3));
	setd ("." +.collectionquestcount+"_collectionamount", getarg(4));
	setd ("." +.collectionquestcount+"_collectionzeny", getarg(5));
	set .@argcount, 6;
	set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionexp"));
	setd ("." +.collectionquestcount+"_collectionexp["+.@size+"]",getarg(.@argcount)); 
	setd ("." +.collectionquestcount+"_collectionexp["+(.@size+1)+"]",getarg(.@argcount+1)); 
	set .@argcount, .@argcount+2;
	while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) {
		set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionitem"));
		setd ("."+.collectionquestcount+"_collectionitem["+.@size+"]",getarg(.@argcount)); 
		setd ("."+.collectionquestcount+"_collectionitem["+(.@size+1)+"]",getarg(.@argcount+1));
		set .@argcount,.@argcount+2;
	}
	return;
}

function AddHunting {
	set .huntingquestcount,.huntingquestcount+1;
	setd ("." +.huntingquestcount+"_huntingname$", getarg(0));
	setd ("." +.huntingquestcount+"_huntingmin", getarg(1));
	setd ("." +.huntingquestcount+"_huntingmax", getarg(2));
	setd ("." +.huntingquestcount+"_huntingprize", getarg(3));
	setd ("." +.huntingquestcount+"_huntingamount", getarg(4));
	setd ("." +.huntingquestcount+"_huntingzeny", getarg(5));
	set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingexp"));
	set .@argcount, 6;
	setd ("." +.huntingquestcount+"_huntingexp["+.@size+"]",getarg(.@argcount));
	setd ("." +.huntingquestcount+"_huntingexp["+(.@size+1)+"]",getarg(.@argcount+1)); 
	set .@argcount, .@argcount+2;
	while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) {
		set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingmob"));
		setd ("."+.huntingquestcount+"_huntingmob["+.@size+"]",getarg(.@argcount)); 
		setd ("."+.huntingquestcount+"_huntingmob["+(.@size+1)+"]",getarg(.@argcount+1));
		set .@argcount, .@argcount+2;
	}
	return;
}
} 

 

but the reward item is only one.

 

i just want to make it two reward item.

 

just like 10 Yggdrasil Berry and 10 Yggdrasil Seed.

 

thanks in advance.

Edited by Brynner

1 answer to this question

Recommended Posts

Posted


//===== rAthena Script =======================================

//= tr0n's Questboard

//===== By: ==================================================

//= tr0n

//===== Current Version: =====================================

//= 1.4.4

//===== Compatible With: =====================================

//= rAthena SVN

//===== Description: =========================================

//= Easily add collection and hunting quests.

//===== Additional Comments: =================================

// 1.0.0 Release

// 1.1.0 Added zeny reward

// 1.2.0 Rewrote checkmob and killcounter

// 1.3.1 Added level restriction

// 1.3.4 Added Reward Item Amount

// 1.4.4 Added Quest delay

//============================================================

prontera,129,215,5 script Questboard 857,{

if(c_run==1){

mes "[^FF7700Questboard^000000]";

mes "^0000FF"+getd("." + currentquest$ + "_collectionname$")+"^000000";

mes "--------------------------------";

for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_collectionitem")); set .@j,.@j+2) {

mes "^FF0000"+getitemname(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+" - "+countitem(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+"/"+getd("."+currentquest$+"_collectionitem["+(.@j+1)+"]")+" ea.^000000";

}

mes "--------------------------------";

mes "[Reward]";

for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_collectionprize")); set .@j,.@j+1)

mes "Item: ^0000FF"+((getd("." +currentquest$+"_collectionprize["+.@j+"]"))?getitemname(getd("." +currentquest$+"_collectionprize["+.@j+"]"))+" - "+getd("." +currentquest$+"_collectionamount["+.@j+"]")+" ea.^000000":"Nothing^000000");

mes "Zeny: ^0000FF"+getd("." +currentquest$+"_collectionzeny")+"^000000";

mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+0+"]")+"^000000";

mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+1+"]")+"^000000";

next;

if(select("Finish:Abort") == 2){

mes "[^FF7700Questboard^000000]";

mes "Quest aborted.";

set currentquest$, "";

set c_run, 0;

close;

}

goto L_checkitems;

}

if(h_run==1){

mes "[^FF7700Questboard^000000]";

mes "^0000FF"+getd("." + currentquest$ + "_huntingname$")+"^000000";

mes "--------------------------------";

for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_huntingmob")); set .@j,.@j+2) {

set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@j)+"]");

mes "^FF0000"+strmobinfo(1,getd("."+currentquest$+"_huntingmob["+.@j+"]"))+" - "+getd(currentquest$+"_"+.@currentmob+"_"+(.@j+1)+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+(.@j+1)+"]")+" ea.^000000";

}

mes "--------------------------------";

mes "[Reward]";

for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_huntingprize")); set .@j,.@j+1)

mes "Item: ^0000FF"+((getd("." +currentquest$+"_huntingprize["+.@j+"]"))?getitemname(getd("." +currentquest$+"_huntingprize["+.@j+"]"))+" - "+getd("." +currentquest$+"_huntingamount["+.@j+"]")+" ea.^000000":"Nothing^000000");

mes "Zeny: ^0000FF"+getd("." +currentquest$+"_huntingzeny")+"^000000";

mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+0+"]")+"^000000";

mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+1+"]")+"^000000";

next;

if(select("Finish:Abort") == 2){

mes "[^FF7700Questboard^000000]";

mes "Quest aborted.";

for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){

set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]");

setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0);

}

set currentquest$, "";

set h_run, 0;

close;

}

goto L_checkmobs;

}

L_questmenu:

mes "[^FF7700Questboard^000000]";

mes "Select category:";

next;

switch(select((.collection)?"Collection Quests":"",

(.hunting)?"Hunting Quests":"",

"Exit")) {

case 1:

set .@collectmenu$, "";

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

if (.@i) set .@collectmenu$,.@collectmenu$+":";

set .@collectmenu$, .@collectmenu$ + "[" + getd("." +(.@i+1)+"_collectionmin") + " - " + getd("." +(.@i+1)+"_collectionmax") + "] " + getd("." + (.@i+1) + "_collectionname$");

}

set .@selection,select(.@collectmenu$);

if(gettimetick(2) < getd(.@selection + "_collection_delay")){

set .@time_left, getd(.@selection + "_collection_delay")-gettimetick(2);

mes "[^FF7700Questboard^000000]";

if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again.";

if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again.";

mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again.";

close;

}

mes "[^FF7700Questboard^000000]";

mes "^0000FF"+getd("." + .@selection + "_collectionname$")+"^000000";

mes "--------------------------------";

for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_collectionitem")); set .@j,.@j+2) {

mes "^FF0000"+getitemname(getd("."+.@selection+"_collectionitem["+.@j+"]"))+" - "+getd("."+.@selection+"_collectionitem["+(.@j+1)+"]")+" ea.^000000";

}

mes "--------------------------------";

mes "[Reward]";

for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_collectionprize")); set .@j,.@j+1)

mes "Item: ^0000FF"+((getd("." +.@selection+"_collectionprize["+.@j+"]"))?getitemname(getd("." +.@selection+"_collectionprize["+.@j+"]"))+" - "+getd("." +.@selection+"_collectionamount["+.@j+"]")+" ea.^000000":"Nothing^000000");

mes "Zeny: ^0000FF"+getd("." +.@selection+"_collectionzeny")+"^000000";

mes "Base EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+0+"]")+"^000000";

mes "Job EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+1+"]")+"^000000";

next;

if(select("Accept:Decline") == 2){

close;

}

if(BaseLevel >= getd("." +.@selection+"_collectionmin") && BaseLevel <= getd("." +.@selection+"_collectionmax"))

{

mes "[^FF7700Questboard^000000]";

mes "Quest accepted.";

set c_run, 1;

set currentquest$, .@selection;

close;

}

else

{

mes "[^FF7700Questboard^000000]";

mes "You don't have the required";

mes "level to do this quest.";

close;

}

case 2:

set .@huntmenu$, "";

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

if (.@i) set .@huntmenu$,.@huntmenu$+":";

set .@huntmenu$, .@huntmenu$ + "[" + getd("." +(.@i+1)+"_huntingmin") + " - " + getd("." +(.@i+1)+"_huntingmax") + "] " + getd("." + (.@i+1) + "_huntingname$");

}

set .@selection,select(.@huntmenu$);

if(gettimetick(2) < getd(.@selection + "_hunting_delay")){

set .@time_left, getd(.@selection + "_hunting_delay")-gettimetick(2);

mes "[^FF7700Questboard^000000]";

if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again.";

if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again.";

mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again.";

close;

}

mes "[^FF7700Questboard^000000]";

mes "^0000FF"+getd("." + .@selection + "_huntingname$")+"^000000";

mes "--------------------------------";

for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_huntingmob")); set .@j,.@j+2) {

mes "^FF0000"+strmobinfo(1,getd("."+.@selection+"_huntingmob["+.@j+"]"))+" - "+getd("."+.@selection+"_huntingmob["+(.@j+1)+"]")+" ea.^000000";

}

mes "--------------------------------";

mes "[Reward]";

for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_huntingprize")); set .@j,.@j+1)

mes "Item: ^0000FF"+((getd("." + .@selection +"_huntingprize["+.@j+"]"))?getitemname(getd("." +.@selection+"_huntingprize["+.@j+"]"))+" - "+getd("." +.@selection+"_huntingamount["+.@j+"]")+" ea.^000000":"Nothing^000000");

mes "Zeny: ^0000FF"+getd("." +.@selection+"_huntingzeny")+"^000000";

mes "Base EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+0+"]")+"^000000";

mes "Job EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+1+"]")+"^000000";

next;

if(select("Accept:Decline") == 2){

close;

}

if(BaseLevel >= getd("." +.@selection+"_huntingmin") && BaseLevel <= getd("." +.@selection+"_huntingmax"))

{

mes "[^FF7700Questboard^000000]";

mes "Quest accepted.";

set h_run, 1;

set currentquest$, .@selection;

close;

}

else

{

mes "[^FF7700Questboard^000000]";

mes "You don't have the required";

mes "level to do this quest.";

close;

}

case 3:

close;

}

L_checkitems:

for( set .@k,0; .@k < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@k,.@k+2) {

if(countitem(getd("."+currentquest$+"_collectionitem["+.@k+"]"))>=getd("."+currentquest$+"_collectionitem["+(.@k+1)+"]")){

set .@checkitem,.@checkitem+2;

}

}

if(.@checkitem<getarraysize(getd("."+currentquest$+"_collectionitem"))){

mes "[^FF7700Questboard^000000]";

mes "You don't have everything.";

close;

}

for( set .@delcount,0; .@delcount < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@delcount,.@delcount+2) {

delitem getd("."+currentquest$+"_collectionitem["+.@delcount+"]"),getd("."+currentquest$+"_collectionitem["+(.@delcount+1)+"]");

}

mes "[^FF7700Questboard^000000]";

mes "Congratulation! Here is your Reward.";

for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_collectionprize")); set .@j,.@j+1)

if(getd("." +currentquest$+"_collectionprize["+.@j+"]")!=0) getitem(getd("." +currentquest$+"_collectionprize["+.@j+"]"),getd("." +currentquest$+"_collectionamount["+.@j+"]"));

set Zeny,Zeny+getd("." +currentquest$+"_collectionzeny");

getexp getd("." +currentquest$+"_collectionexp["+0+"]"),getd("." +currentquest$+"_collectionexp["+1+"]");

setd(currentquest$ + "_collection_delay"),gettimetick(2)+.quest_delay;

set currentquest$, "";

set c_run, 0;

close;

L_checkmobs:

set .@goal, (getarraysize(getd("."+currentquest$+"_huntingmob"))/2);

for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){

set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]");

if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")==getd("."+currentquest$+"_huntingmob["+.@i+"]")){

set .@checkmonster, .@checkmonster+1;

if(.@checkmonster==.@goal){

goto L_checkmobs2;

}

continue;

}

goto L_checkmobs2;

}

L_checkmobs2:

if(.@checkmonster<.@goal){

mes "[^FF7700Questboard^000000]";

mes "You didn't kill everything.";

close;

}

mes "[^FF7700Questboard^000000]";

mes "Congratulation! Here is your Reward.";

for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){

set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]");

setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0);

}

for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_huntingprize")); set .@j,.@j+1)

if(getd("." +currentquest$+"_huntingprize["+.@j+"]")!=0) getitem(getd("." +currentquest$+"_huntingprize["+.@j+"]"),getd("." +currentquest$+"_huntingamount["+.@j+"]"));

set Zeny, Zeny+getd("." +currentquest$+"_huntingzeny");

getexp getd("." +currentquest$+"_huntingexp["+0+"]"),getd("." +currentquest$+"_huntingexp["+1+"]");

setd(currentquest$ + "_hunting_delay"),gettimetick(2)+.quest_delay;

set currentquest$, "";

set h_run, 0;

close;

OnNPCKillEvent:

if(h_run!=1) end;

for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){

if(killedrid==getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]")){

set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]");

if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")>=getd("."+currentquest$+"_huntingmob["+.@i+"]")) end;

setd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount", getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+1);

dispbottom getd("."+currentquest$+"_huntingname$")+": ["+strmobinfo(1,.@currentmob)+"] ("+ getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+.@i+"]")+")";

end;

}

continue;

}

end;

OnInit:

function AddCollection;

function AddHunting;

function CollectionReward;

function HuntingReward;

//Activate/Deactive quest categories here

set .collection, 1;

set .hunting, 1;

//Quest Delay (seconds)

//24 hours = 86400 seconds

set .quest_delay, 0;

//Checks if quests are loaded (prevents out of index)

if(.questsloaded==1) end;

set .questsloaded, 1;

//Add Collection Quests here

//AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...);

//CollectionReward(<Reward|Item ID>,<Reward|Item Amount>,...);

//AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...);

//CollectionReward(<Reward|Item ID>,<Reward|Item Amount>,...);

//Add Hunting Quests here

//AddHunting("<Quest Name>",<Min Lvl>,<Max Lvl>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...);

//HuntingReward(<Reward|Item ID>,<Reward|Item Amount>,...);

end;

function CollectionReward {

.@count = getargcount();

while( .@i < .@count ) {

setd ("." +.collectionquestcount+"_collectionprize["+ (.@i/2) +"]", getarg(.@i));

setd ("." +.collectionquestcount+"_collectionamount["+ (.@i/2) +"]", getarg(.@i+1));

.@i += 2;

}

}

function HuntingReward {

.@count = getargcount();

while( .@i < .@count ) {

setd ("." +.huntingquestcount+"_huntingprize["+ (.@i/2) +"]", getarg(.@i));

setd ("." +.huntingquestcount+"_huntingamount["+ (.@i/2) +"]", getarg(.@i+1));

.@i += 2;

}

}

function AddCollection {

set .collectionquestcount,.collectionquestcount+1;

setd ("." +.collectionquestcount+"_collectionname$", getarg(0));

setd ("." +.collectionquestcount+"_collectionmin", getarg(1));

setd ("." +.collectionquestcount+"_collectionmax", getarg(2));

setd ("." +.collectionquestcount+"_collectionzeny", getarg(3));

set .@argcount, 4;

set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionexp"));

setd ("." +.collectionquestcount+"_collectionexp["+.@size+"]",getarg(.@argcount));

setd ("." +.collectionquestcount+"_collectionexp["+(.@size+1)+"]",getarg(.@argcount+1));

set .@argcount, .@argcount+2;

while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) {

set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionitem"));

setd ("."+.collectionquestcount+"_collectionitem["+.@size+"]",getarg(.@argcount));

setd ("."+.collectionquestcount+"_collectionitem["+(.@size+1)+"]",getarg(.@argcount+1));

set .@argcount,.@argcount+2;

}

return;

}

function AddHunting {

set .huntingquestcount,.huntingquestcount+1;

setd ("." +.huntingquestcount+"_huntingname$", getarg(0));

setd ("." +.huntingquestcount+"_huntingmin", getarg(1));

setd ("." +.huntingquestcount+"_huntingmax", getarg(2));

setd ("." +.huntingquestcount+"_huntingzeny", getarg(3));

set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingexp"));

set .@argcount, 4;

setd ("." +.huntingquestcount+"_huntingexp["+.@size+"]",getarg(.@argcount));

setd ("." +.huntingquestcount+"_huntingexp["+(.@size+1)+"]",getarg(.@argcount+1));

set .@argcount, .@argcount+2;

while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) {

set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingmob"));

setd ("."+.huntingquestcount+"_huntingmob["+.@size+"]",getarg(.@argcount));

setd ("."+.huntingquestcount+"_huntingmob["+(.@size+1)+"]",getarg(.@argcount+1));

set .@argcount, .@argcount+2;

}

return;

}

}

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...