Jump to content
  • 0
Sign in to follow this  
DeviantRaze

Quest Board

Question

Can someone tell how to change something on this script?

 

All i wanted is to how can you make another with different quest list not just duplicate the NPC but to make another type of this NPC.

 

 

//===== rAthena Script =======================================//= tr0n's Questboard//===== By: ==================================================//= tr0n//===== Current Version: =====================================//= 1.4.4//===== Compatible With: ===================================== //= rAthena Project//===== 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//============================================================pron_mall,91,66,5	script	Bulletin Quest	837,{			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>,...);		AddCollection("Zoro Sword",1,255,27001,1,1000000,10000,5000,4027,15,4090,15,7511,500,7563,1500);		AddCollection("Samehada",1,255,27002,1,1000000,10000,5000,4105,15,4089,15,7511,500,7563,1500);		AddCollection("Chaos Blade",1,255,27003,1,1000000,10000,5000,4117,15,4281,15,7511,500,7563,1500);		AddCollection("Back Scythe",1,255,27004,1,1000000,10000,5000,4381,15,4172,15,7511,300,7563,1000);		AddCollection("Blade of Dragon",1,255,27005,1,1000000,10000,5000,4428,15,4096,15,7511,500,7563,1500);		AddCollection("Twin-Sword Spirit",1,255,27006,1,1000000,10000,5000,4191,15,4427,15,7511,500,7563,1500);						//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>,...);		AddHunting("Valkyrie Quest",150,255,24001,1,1000000,100000,50000,1751,1,1765,5);		AddHunting("Darker Than Black",150,255,25001,1,100000,10000,5000,1120,10,1179,50,1116,50,1869,50,1143,50);		AddHunting("Thanatos Slaves",150,255,25002,1,100000,10000,5000,1704,10,1705,10,1706,10,1707,10,1708,1);		AddHunting("Valkyrie Realm",150,255,25003,1,100000,10000,5000,1765,10,1751,1);		AddHunting("Mask of Despair",150,255,25004,1,100000,10000,5000,1130,50,1831,30,1833,30,1837,50,1832,1);		AddHunting("Glass of Despair",150,255,25005,1,100000,10000,5000,1130,50,1831,50,1833,50,1837,50,1832,1);		AddHunting("Scarf Of Nightmare",150,255,25006,1,100000,10000,5000,1867,50,1268,10,1507,50,1109,50);		AddHunting("Ring Of Night",150,255,25007,1,100000,10000,5000,1146,100,1203,10,1379,50);		AddHunting("Ring Of Sound Wave",150,255,25008,1,100000,10000,5000,1408,50,1267,100,1513,30,1299,1);		AddHunting("Sun Glass Of Hidden",150,255,25009,1,100000,10000,5000,1289,150);												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;}}

 

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.