Jump to content
  • 0
Sign in to follow this  
Almond Snicker

questboard multiplication

Question

Hi all,

Just wanting to seek help on how make multiple questboard? (Not Duplicate)
ex. Specific set of quest board for Payon Dungeon, Orc Dungeon and ETC..

What can I change on the script so I can have multiple questboards on every town or dungeon?
I tried changing couple of scripts by identifying them to each town but didn't succeed..

//===== rAthena Script =======================================
//= tr0n's Questboard
//===== By: ==================================================
//= tr0n
//===== Current Version: =====================================
//= 1.6.6
//===== Description: =========================================
//= Easily add collection and hunting quests.
//===== Changelogs: ==========================================
// 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
// 1.5.4 Added repeatable Quests
// 1.6.4 Added party support
// 1.6.5 Bug fixes for party support
// 1.6.6 Bug fixes for delay time does not appear [mazvi]
//============================================================
prontera,134,214,5	script	[Alberta] Mission Board	4_BOARD3,{

	if(c_run==true){
		mes "[^FF7700Questboard^000000]";
		mes "^0000FF"+getd("." + albertaquest$ + "_collectionname$")+"^000000";
		mes "--------------------------------";
		set [email protected], getarraysize(getd("."+ albertaquest$ + "_collectionitem"));
		for( set [email protected], 0; [email protected] < [email protected]; set [email protected],[email protected]+2){
			mes "^FF0000"+getitemname(getd("."+albertaquest$+"_collectionitem["[email protected]+"]"))+" - "+countitem(getd("."+albertaquest$+"_collectionitem["[email protected]+"]"))+"/"+getd("."+albertaquest$+"_collectionitem["+([email protected]+1)+"]")+" ea.^000000";
		}
		mes "--------------------------------";
		mes "[Reward]";
		mes "Item: ^0000FF"+((getd("." +albertaquest$+"_collectionprize"))?getitemname(getd("." +albertaquest$+"_collectionprize"))+" - "+getd("." +albertaquest$+"_collectionamount")+" ea.^000000":"Nothing^000000");
		mes "Zeny: ^0000FF"+getd("." +albertaquest$+"_collectionzeny")+"^000000";
		mes "Base EXP: ^0000FF"+getd("." +albertaquest$+"_collectionexp["+0+"]")+"^000000";
		mes "Job EXP: ^0000FF"+getd("." +albertaquest$+"_collectionexp["+1+"]")+"^000000";
		next;
		if(select("Finish:Abort") == 2){
			mes "[^FF7700Questboard^000000]";
			mes "Quest aborted.";
			set albertaquest$, "";
			set c_run, false;
			close;
		}
		goto L_checkitems;
	}

	if(h_run==true){
		mes "[^FF7700Questboard^000000]";
		mes "^0000FF"+getd("." + albertaquest$ + "_huntingname$")+"^000000";
		mes "--------------------------------";
		set [email protected], getarraysize(getd("."+ albertaquest$ + "_huntingmob"));
		for( set [email protected], 0; [email protected] < [email protected]; set [email protected],[email protected]+2){
			set [email protected], getd("."+albertaquest$+"_huntingmob["+([email protected])+"]");
			mes "^FF0000"+strmobinfo(1,getd("."+albertaquest$+"_huntingmob["[email protected]+"]"))+" - "+getd(albertaquest$+"_"[email protected]+"_"+([email protected]+1)+"_killcount")+"/"+getd("."+albertaquest$+"_huntingmob["+([email protected]+1)+"]")+" ea.^000000";
		}
		mes "--------------------------------";
		mes "[Reward]";
		mes "Item: ^0000FF"+((getd("." +albertaquest$+"_huntingprize"))?getitemname(getd("." +albertaquest$+"_huntingprize"))+" - "+getd("." +albertaquest$+"_huntingamount")+" ea.^000000":"Nothing^000000");
		mes "Zeny: ^0000FF"+getd("." +albertaquest$+"_huntingzeny")+"^000000";
		mes "Base EXP: ^0000FF"+getd("." +albertaquest$+"_huntingexp["+0+"]")+"^000000";
		mes "Job EXP: ^0000FF"+getd("." +albertaquest$+"_huntingexp["+1+"]")+"^000000";
		next;
		if(select("Finish:Abort") == 2){
			mes "[^FF7700Questboard^000000]";
			mes "Quest aborted.";
			for(set [email protected], 1; [email protected] < [email protected]; set [email protected],[email protected]+2){
				set [email protected], getd("."+albertaquest$+"_huntingmob["+([email protected])+"]");
				setd(albertaquest$+"_"[email protected]+"_"[email protected]+"_killcount", 0);
			}
			set albertaquest$, "";
			set h_run, false;
			close;
		}
		goto L_checkmobs;
	}

	mes "[^FF7700Questboard^000000]";
	mes "Select category:";
	next;

	switch(select((.collection)?"Collection Quests":"",
				  (.hunting)?"Hunting Quests":"",
				  "Exit")) {

	case 1:
		set [email protected]$, "";
		for( set [email protected],0; [email protected] < .collectionquestcount; set [email protected],[email protected]+1){
			if ([email protected]) set [email protected]$,[email protected]$+":";
			set [email protected]$, [email protected]$ + "[" + getd("." +([email protected]+1)+"_collectionmin") + " - " + getd("." +([email protected]+1)+"_collectionmax") + "] " + getd("." + ([email protected]+1) + "_collectionname$");
		}
		set [email protected],select([email protected]$);
		if(.quest_repeat == true){
			if(gettimetick(2) < getd([email protected] + "_collection_delay")){
				mes "[^FF7700Questboard^000000]";
				mes "You have to wait ^0000FF"+Time2Str(getd([email protected] + "_collection_delay"))+"^000000 to do this quest again.";
				close;
			}
		}
		else{
			if(getd([email protected] + "_collection_repeat") == true){
				mes "[^FF7700Questboard^000000]";
				mes "You already did this quest.";
				mes "Please choose another one.";
				close;
			}
		}
		mes "[^FF7700Questboard^000000]";
		mes "^0000FF"+getd("." + [email protected] + "_collectionname$")+"^000000";
		mes "--------------------------------";
		set [email protected], getarraysize(getd("."+ [email protected] + "_collectionitem"));
		for( set [email protected], 0; [email protected] < [email protected]; set [email protected],[email protected]+2){
			mes "^FF0000"+getitemname(getd("."[email protected]+"_collectionitem["[email protected]+"]"))+" - "+getd("."[email protected]+"_collectionitem["+([email protected]+1)+"]")+" ea.^000000";
		}
		mes "--------------------------------";
		mes "[Reward]";
		mes "Item: ^0000FF"+((getd("." [email protected]+"_collectionprize"))?getitemname(getd("." [email protected]+"_collectionprize"))+" - "+getd("." [email protected]+"_collectionamount")+" ea.^000000":"Nothing^000000");
		mes "Zeny: ^0000FF"+getd("." [email protected]+"_collectionzeny")+"^000000";
		mes "Base EXP: ^0000FF"+getd("." [email protected]+"_collectionexp["+0+"]")+"^000000";
		mes "Job EXP: ^0000FF"+getd("." [email protected]+"_collectionexp["+1+"]")+"^000000";
		next;
		if(select("Accept:Decline") == 2){
			close;
		}
		if(BaseLevel >= getd("." [email protected]+"_collectionmin") && BaseLevel <= getd("." [email protected]+"_collectionmax")){
			mes "[^FF7700Questboard^000000]";
			mes "Quest accepted.";
			set c_run, true;
			set albertaquest$, [email protected];
			close;
		}
		else{
			mes "[^FF7700Questboard^000000]";
			mes "You don't have the required";
			mes "level to do this quest.";
			close;
		}

	case 2:
		set [email protected]$, "";
		for( set [email protected],0; [email protected] < .huntingquestcount; set [email protected],[email protected]+1){
			if ([email protected]) set [email protected]$,[email protected]$+":";
			set [email protected]$, [email protected]$ + "[" + getd("." +([email protected]+1)+"_huntingmin") + " - " + getd("." +([email protected]+1)+"_huntingmax") + "] " + getd("." + ([email protected]+1) + "_huntingname$");
		}
		set [email protected],select([email protected]$);
		if(.quest_repeat == true){
			if(gettimetick(2) < getd([email protected] + "_hunting_delay")){
				mes "[^FF7700Questboard^000000]";
				mes "You have to wait ^0000FF"+Time2Str(getd([email protected] + "_hunting_delay"))+"^000000 to do this quest again.";
				close;
			}
		}
		else{
			if(getd([email protected] + "_hunting_repeat") == true){
				mes "[^FF7700Questboard^000000]";
				mes "You already did this quest.";
				mes "Please choose another one.";
				close;
			}
		}
		mes "[^FF7700Questboard^000000]";
		mes "^0000FF"+getd("." + [email protected] + "_huntingname$")+"^000000";
		mes "--------------------------------";
		set [email protected], getarraysize(getd("."+ [email protected] + "_huntingmob"));
		for( set [email protected], 0; [email protected] < [email protected]; set [email protected],[email protected]+2){
			mes "^FF0000"+strmobinfo(1,getd("."[email protected]+"_huntingmob["[email protected]+"]"))+" - "+getd("."[email protected]+"_huntingmob["+([email protected]+1)+"]")+" ea.^000000";
		}
		mes "--------------------------------";
		mes "[Reward]";
		mes "Item: ^0000FF"+((getd("." [email protected]+"_huntingprize"))?getitemname(getd("." [email protected]+"_huntingprize"))+" - "+getd("." [email protected]+"_huntingamount")+" ea.^000000":"Nothing^000000");
		mes "Zeny: ^0000FF"+getd("." [email protected]+"_huntingzeny")+"^000000";
		mes "Base EXP: ^0000FF"+getd("." [email protected]+"_huntingexp["+0+"]")+"^000000";
		mes "Job EXP: ^0000FF"+getd("." [email protected]+"_huntingexp["+1+"]")+"^000000";
		next;
		if(select("Accept:Decline") == 2){
			close;
		}
		if(BaseLevel >= getd("." [email protected]+"_huntingmin") && BaseLevel <= getd("." [email protected]+"_huntingmax")){
			mes "[^FF7700Questboard^000000]";
			mes "Quest accepted.";
			set h_run, true;
			set albertaquest$, [email protected];
			close;
		}
		else{
			mes "[^FF7700Questboard^000000]";
			mes "You don't have the required";
			mes "level to do this quest.";
			close;
		}

	case 3:
		close;
	}

L_checkitems:
	set [email protected], getarraysize(getd("."+albertaquest$+"_collectionitem"));
	for( set [email protected],0; [email protected] < [email protected]; set [email protected],[email protected]+2){
		if(countitem(getd("."+albertaquest$+"_collectionitem["[email protected]+"]"))>=getd("."+albertaquest$+"_collectionitem["+([email protected]+1)+"]")){
			set [email protected],[email protected]+2;
		}
	}
	if([email protected]<[email protected]){
		mes "[^FF7700Questboard^000000]";
		mes "You don't have everything.";
		close;
	}
	for( set [email protected],0; [email protected] < [email protected]; set [email protected],[email protected]+2){
		delitem getd("."+albertaquest$+"_collectionitem["[email protected]+"]"),getd("."+albertaquest$+"_collectionitem["+([email protected]+1)+"]");
	}
	mes "[^FF7700Questboard^000000]";
	mes "Congratulation! Here is your Reward.";
	if(getd("." +albertaquest$+"_collectionprize")!=0) getitem(getd("." +albertaquest$+"_collectionprize"),getd("." +albertaquest$+"_collectionamount"));
	set Zeny,Zeny+getd("." +albertaquest$+"_collectionzeny");
	getexp getd("." +albertaquest$+"_collectionexp["+0+"]"),getd("." +albertaquest$+"_collectionexp["+1+"]");
	setd(albertaquest$ + "_collection_delay"),gettimetick(2)+.quest_delay;
	setd(albertaquest$ + "_collection_repeat"),true;
	set albertaquest$, "";
	set c_run, false;
	close;

L_checkmobs:
	set [email protected], getarraysize(getd("."+albertaquest$+"_huntingmob"));
	set [email protected], [email protected]/2;
	for(set [email protected], 1; [email protected] < [email protected]; set [email protected],[email protected]+2){
		set [email protected], getd("."+albertaquest$+"_huntingmob["+([email protected])+"]");
		if(getd(albertaquest$+"_"[email protected]+"_"[email protected]+"_killcount")==getd("."+albertaquest$+"_huntingmob["[email protected]+"]")){
			set [email protected], [email protected]+1;
			if([email protected][email protected]){
				goto L_checkmobs2;
			}
			continue;
		}
		goto L_checkmobs2;
	}

L_checkmobs2:
	if([email protected]<[email protected]){
		mes "[^FF7700Questboard^000000]";
		mes "You didn't kill everything.";
		close;
	}
	mes "[^FF7700Questboard^000000]";
	mes "Congratulation! Here is your Reward.";
	set [email protected], getarraysize(getd("."+albertaquest$+"_huntingmob"));
	for(set [email protected], 1; [email protected] < [email protected]; set [email protected],[email protected]+2){
		set [email protected], getd("."+albertaquest$+"_huntingmob["+([email protected])+"]");
		setd(albertaquest$+"_"[email protected]+"_"[email protected]+"_killcount", 0);
	}
	if(getd("." +albertaquest$+"_huntingprize")!=0) getitem(getd("." +albertaquest$+"_huntingprize"),getd("." +albertaquest$+"_huntingamount"));
	set Zeny, Zeny+getd("." +albertaquest$+"_huntingzeny");
	getexp getd("." +albertaquest$+"_huntingexp["+0+"]"),getd("." +albertaquest$+"_huntingexp["+1+"]");
	setd(albertaquest$ + "_hunting_delay"),gettimetick(2)+.quest_delay;
	setd(albertaquest$ + "_hunting_repeat"),true;
	set albertaquest$, "";
	set h_run, false;
	close;

OnNPCKillEvent:
	if(h_run!=true) end;
	set [email protected], getarraysize(getd("."+albertaquest$+"_huntingmob"));
	for(set [email protected], 1; [email protected] < [email protected]; set [email protected],[email protected]+2){
		if(killedrid==getd("."+albertaquest$+"_huntingmob["+([email protected])+"]")){
			set [email protected], getd("."+albertaquest$+"_huntingmob["+([email protected])+"]");
			if(getd(albertaquest$+"_"[email protected]+"_"[email protected]+"_killcount")<getd("."+albertaquest$+"_huntingmob["[email protected]+"]")){
				setd(albertaquest$+"_"[email protected]+"_"[email protected]+"_killcount", getd(albertaquest$+"_"[email protected]+"_"[email protected]+"_killcount")+1);
				dispbottom getd("."+albertaquest$+"_huntingname$")+": ["+strmobinfo(1,[email protected])+"] ("+ getd(albertaquest$+"_"[email protected]+"_"[email protected]+"_killcount")+"/"+getd("."+albertaquest$+"_huntingmob["[email protected]+"]")+")";
			}
			if(getcharid(1) != 0 && .party_support == true){
				getmapxy([email protected]$,[email protected],[email protected]);
				set [email protected], getcharid(3);
				set [email protected]$, albertaquest$;
				getpartymember getcharid(1),1;
				getpartymember getcharid(1),2;
				for(set [email protected], 0; [email protected] < [email protected]; [email protected]++){
					if(isloggedin([email protected][[email protected]], [email protected][[email protected]])){
						if(h_run==true && [email protected][[email protected]] != [email protected] && [email protected]$ == getvar(albertaquest$, [email protected][[email protected]]) && readparam(HP, [email protected][[email protected]]) > 0){
							getmapxy([email protected]$,[email protected],[email protected],BL_PC,rid2name([email protected][[email protected]]));
							if([email protected]$ == [email protected]$ && distance([email protected],[email protected],[email protected],[email protected]) < .party_range){
								set [email protected]_amt,getvar(getd([email protected]$+"_"[email protected]+"_"[email protected]+"_killcount"), [email protected][[email protected]]);
								set [email protected]_goal,getd("."[email protected]$+"_huntingmob["[email protected]+"]");
								if([email protected]_amt<[email protected]_goal)
								{
									setd([email protected]$+"_"[email protected]+"_"[email protected]+"_killcount", [email protected]_amt+1, [email protected][[email protected]]);
									dispbottom getd("."[email protected]$+"_huntingname$")+": ["+strmobinfo(1,[email protected])+"] ("+([email protected]_amt+1)+"/"[email protected]_goal+")", 0xB6FF00, [email protected][[email protected]];
								}
							}
						}
					}
				}
			}
			break;
		}
	}
	end;

OnInit:

	function AddCollection;
	function AddHunting;

	//Activate/Deactivate quest categories (true/1 - activated, false/0 - deactivated)
	set .collection, true;
	set .hunting, true;

	//Quest Delay (seconds)
	//24 hours = 86400 seconds
	set .quest_delay, 0;

	//Activate/Deactivate repeatable quests (true/1 - activated, false/0 - deactivated)
	set .quest_repeat, true;

	//Activate/Deactivate party support (true/1 - activated, false/0 - deactivated)
	set .party_support, true;

	//Max range for party support (+- x & y coordinations)
	set .party_range, 25;

	//Checks if quests are loaded (prevents out of index)
	if(.questsloaded==true) end;
	set .questsloaded, true;

	//Add Collection Quests here (You can add as many required items as you want)
	//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 (You can add as many required mobs as you want)
	//AddHunting("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...);
	AddHunting("EASY - 50 Hydra",1,99,512,1,0,100000,100000,1068,50);
	AddHunting("EASY - 50 Poison Spore",1,99,512,1,0,100000,100000,1077,50);
	AddHunting("EASY - 50 Kukre",1,99,512,1,0,100000,100000,1070,50);
	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 [email protected], 6;
		set [email protected], getarraysize(getd("."+ .collectionquestcount + "_collectionexp"));
		setd ("." +.collectionquestcount+"_collectionexp["[email protected]+"]",getarg([email protected])); 
		setd ("." +.collectionquestcount+"_collectionexp["+([email protected]+1)+"]",getarg([email protected]+1)); 
		set [email protected], [email protected]+2;
		set [email protected], getarraysize(getd("."+ .collectionquestcount + "_collectionitem"));
		while(getarg([email protected],-1)!=-1 && getarg([email protected]+1,-1)!=-1){
			setd ("."+.collectionquestcount+"_collectionitem["[email protected]+"]",getarg([email protected])); 
			setd ("."+.collectionquestcount+"_collectionitem["+([email protected]+1)+"]",getarg([email protected]+1));
			set [email protected],[email protected]+2;
			set [email protected], [email protected]+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 [email protected], getarraysize(getd("."+ .huntingquestcount + "_huntingexp"));
		set [email protected], 6;
		setd ("." +.huntingquestcount+"_huntingexp["[email protected]+"]",getarg([email protected]));
		setd ("." +.huntingquestcount+"_huntingexp["+([email protected]+1)+"]",getarg([email protected]+1)); 
		set [email protected], [email protected]+2;
		set [email protected], getarraysize(getd("."+ .huntingquestcount + "_huntingmob"));
		while(getarg([email protected],-1)!=-1 && getarg([email protected]+1,-1)!=-1){
			setd ("."+.huntingquestcount+"_huntingmob["[email protected]+"]",getarg([email protected])); 
			setd ("."+.huntingquestcount+"_huntingmob["+([email protected]+1)+"]",getarg([email protected]+1));
			set [email protected], [email protected]+2;
			set [email protected], [email protected]+2;
		}
		return;
	}
}



 

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

just duplicate the script for each town or maps, and rename the npc variable (albertaquest) so that its unique to each other.

Share this post


Link to post
Share on other sites
  • 0

I tried adding #TOWN after the npc name if that's what you mean by npc variable.

what happen is that whenever you take the 1st quest on Payon board, then you try to click on Alberta Board, it will show that you have already taken the same line of quest on the list.

 

Share this post


Link to post
Share on other sites
  • 0
mes "^0000FF"+getd("." + albertaquest$ + "_collectionname$")+"^000000";

This is a variable(red).. the #Town is called Hidden NPC Name.. Still too lazy to read the whole script. but I guess there would be some complications even if you change that variable if you didn't copy the whole code and paste it on another .txt instead of using duplicate.

Share this post


Link to post
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.

Sign in to follow this  

×
×
  • Create New...

Important Information

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