Jump to content
  • 0

Mission Board made by Annieruru


Radian

Question


  • Group:  Members
  • Topic Count:  162
  • Topics Per Day:  0.05
  • Content Count:  1546
  • Reputation:   192
  • Joined:  07/23/14
  • Last Seen:  

Hi guys! Im having issue with the script on the part where the mission was set to `Only Once` when you finished it then apply for it again you can then after that it will be recorded that you already complete the quest.

//	~~~~~ Please use this latest int__ function that support negative numbers ~~~~~
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$;
}

//===== eAthena Script ============================================
//= Mission Board
//===== By: =======================================================
//= ~AnnieRuru~
//===== Current Version: ==========================================
//= 2.4a
//===== Compatible With: ==========================================
//= hercules 2014-03-05
//===== Description: ==============================================
//= allow admin to setup their own quests dynamically
//===== Topic =====================================================
//= http://hercules.ws/board/topic/4726-
//===== Additional Comments: ======================================
//= very outdated script ... but yet ... its still a popular script ...
//=================================================================

-	script	mission board#127::ms_b_	-1,{
	mes "["+ strnpcinfo(1) +"]";
	if ( atoi( strnpcinfo(2) ) <= 0 || atoi( strnpcinfo(2) ) > 127 ) {
		mes "This board is currently down";
		mes "Please report to GM";
		mes "Reason: Invalid NPC ID";
		close;
	}
	if ( .duplicate_id ) {
		set .@size, getarraysize(.duplicate_id);
		for ( set .@i, 0; .@i < .@size; set .@i, .@i +1 ) {
			if ( .duplicate_id[.@i] == atoi( strnpcinfo(2) ) ) {
				mes "This board is currently down";
				mes "Please report to GM";
				mes "Reason: duplicate NPC ID#"+ strnpcinfo(2);
				close;
			}
		}
	}
	if ( .loading == 1 ) {
		mes "The board is currently loading mission data, please try again!";
		close;
	}
	if ( @ms_b_loading == 1 ) {
		mes "The board is currently loading player data";
		mes "Please wait";
		close;
	}
	mes "The Mission Board will instruct you to hunt certain monsters or items. Completing missions will result into rewards such as Rare Items.";
	next;
	mes "["+ strnpcinfo(1) +"]";
	mes "Every player may pick up to ^FF00004^000000 missions from the Mission Board.";
	mes "Missions that end with '^FF0000Slayer^000000' are kill count missions and those that end with '^FF0000Collector^000000' are item gathering missions.";
	next;
	mes "["+ strnpcinfo(1) +"]";
	mes "^FF0000Please remember that, when accepting a mission, you need to be within the assigned level range when you ACCEPT and SUBMIT it!^000000";
	sleep2 100;
	set @slot, 0;
	next;
	for ( set .@i, 1; .@i <= 4; set .@i, .@i +1 ) {
		if ( getd("@ms_b_m_"+ .@i) ) {
			if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") == "" ) {
				dispbottom "Mission Board: Your Mission#"+ .@i +" has been deleted because it is no longer available.";
				deletearray getd("@ms_b_m_"+ .@i);
				setd "ms_b_m_"+ .@i +"$", "";
				deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
			}
			else if ( getd("@ms_b_m_"+ .@i +"[1]") && getd("@ms_b_m_"+ .@i +"[1]") <= gettimetick(2) ) {
				dispbottom "Mission #1: "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") +" has expired!";
				deletearray getd("@ms_b_m_"+ .@i);
				setd "ms_b_m_"+ .@i +"$", "";
				deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
			}
		}
	}
	set .@size, getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) );
	for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 ) {
		if ( getd("@ms_b_n_"+ strnpcinfo(2) +"[0]") != atoi( gettimestr("%Y%m%d", 9) ) && getd(".ms_b_m_"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 1 ||
			getd(".ms_b_m_"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 0 ) {
				deletearray getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]"), 1;
				set .@i, .@i -1 ;
				set .@size, .@size -1;
		}
	}
	if ( getd("@ms_b_n_"+ strnpcinfo(2) +"[1]") ) {
		setd "ms_b_n_"+ strnpcinfo(2) +"$",    gettimestr("%Y%m%d", 9);
		set .@size, getarraysize( getd("@ms_b_n_"+ strnpcinfo(2) ) );
		for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
			setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
		setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#";
	}
	else
		setd "ms_b_n_"+ strnpcinfo(2) +"$", "";
	switch ( select ( "- Submit completed mission", "- Drop a mission", "- Accept a mission", ( getgmlevel() < 99 )?"":"^FF0000Administrator Settings^000000" ) ) {
		case 1:
			mes "["+ strnpcinfo(1) +"]";
			mes "Please select the mission you wish to submit:";
			set @slot, select(
				"#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
			if ( getd("@ms_b_m_"+ @slot +"[0]") == 0 ) {
				mes "It appears that you have selected a empty slot!";
				close;
			}
			callsub L_showprogress;
			mes "Are you sure you want to submit the selected mission?";
			next;
			if ( select ( "Yes", "No" ) == 2 ) close;
			mes "["+ strnpcinfo(1) +"]";
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[11]") != atoi( strnpcinfo(2) ) ) {
				mes "Please submit this mission to:";
				mes "^0000FF"+ .ms_b_name$[ getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[11]") ] +"^000000";
				close;
			}
			set .@size, getarraysize( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
			for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
				if ( getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") < getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]") ) {
					mes "You do not meet the requirements to submit this mission. Please submit the mission once you've killed the required amount of monsters!";
					close;
				}
			}
			set .@size, getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
			for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
				if ( countitem( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") )  < getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]") ) {
					mes "You do not meet the requirements to submit this mission. Please submit this mission once you've gathered the required item(s)!";
					close;
				}
			}
			if ( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ) {
				getinventorylist;
				deletearray @inventorylist_id, @inventorylist_count;
				deletearray @inventorylist_amount, @inventorylist_count;
				deletearray @inventorylist_equip, @inventorylist_count;
				deletearray @inventorylist_refine, @inventorylist_count;
				deletearray @inventorylist_identify, @inventorylist_count;
				deletearray @inventorylist_attribute, @inventorylist_count;
				deletearray @inventorylist_card1, @inventorylist_count;
				deletearray @inventorylist_card2, @inventorylist_count;
				deletearray @inventorylist_card3, @inventorylist_count;
				deletearray @inventorylist_card4, @inventorylist_count;
				set .@size, getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
				for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
					set .@itemWeight, .@itemWeight + getiteminfo( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), 6 ) * getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]");
				}
				if ( @inventorylist_count > 95 || Weight + .@itemWeight > MaxWeight ) {
					mes "It appears that you are overWeight, please clean up some inventory space.";
					set @inventorylist_count, 0;
					close;
				}
				set @inventorylist_count, 0;
			}
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[3]") && ( BaseLevel < getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[3]") || BaseLevel > getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[4]") ) ) {
				mes "You're not within the level range to submit this mission!";
				close;
			}
			mes "Congratulations, the mission has been completed!";
			mes " ";
			set .@size, getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
			for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
				delitem getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]");
			mes "[Rewards]";
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) {
				mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) +"^000000";
				dispbottom "Mission Reward - Base EXP : "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") );
				set BaseExp, BaseExp + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]");
			}
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) {
				mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) +"^000000";
				dispbottom "Mission Reward - Job EXP : "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") );
				set JobExp, JobExp + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]");
			}
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) {
				mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +"^000000";
				dispbottom "Mission Reward - "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +" Zeny";
				set Zeny, Zeny + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]");
			}
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) {
				mes "Mission Points : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +"^000000";
				dispbottom "Mission Reward - "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +" Mission Pointss";
				set #MISSIONPOINTS, #MISSIONPOINTS + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]");
			}
			set .@size, getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
			for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
				mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000";
				getitem getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]");
			}
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[6]") ) {
				set .@size, getarraysize( getd("@ms_b_n_"+ strnpcinfo(2) ) );
				setd "@ms_b_n_"+ strnpcinfo(2) +"[0]", gettimestr("%Y%m%d", 9);
				setd "@ms_b_n_"+ strnpcinfo(2) +"["+ .@size +"]", getd("@ms_b_m_"+ @slot +"[0]");
				setd "ms_b_n_"+ strnpcinfo(2) +"$",    gettimestr("%Y%m%d", 9);
				for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
					setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
				setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#";
			}
			deletearray getd("@ms_b_m_"+ @slot);
			setd "ms_b_m_"+ @slot +"$", "";
			deltimer "ms_b_::OnQuest"+ @slot +"TimeUp";
			set @slot, 0;
			close;
		case 2:
			mes "["+ strnpcinfo(1) +"]";
			mes "Please select the slot with the mission that you wish to drop:";
			set @slot, select(
				"#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
			if ( getd("@ms_b_m_"+ @slot +"[0]") == 0 ) {
				mes "It appears that you have selected a empty slot!";
				close;
			}
			callsub L_showprogress;
			mes "Are you sure that you want to give up this mission?";
			mes "^777777NOTE: Any progress you've made for this mission will be lost!^000000";
			next;
			if ( select ( "Yes", "No" ) == 2 ) close;
			mes "["+ strnpcinfo(1) +"]";
			mes "^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[0]") +"^000000";
			mes " ";
			mes "Mission has given up successfully";
			deletearray getd("@ms_b_m_"+ @slot);
			setd "ms_b_m_"+ @slot +"$", "";
			deltimer "ms_b_::OnQuest"+ @slot +"TimeUp";
			set @slot, 0;
			close;
		case 3:
			mes "["+ strnpcinfo(1) +"]";
			mes "Please select a (empty) slot:";
			if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
				mes "There is no mission available";
				close;
			}
			set .@slot, select(
				"#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
			if ( getd("@ms_b_m_"+ .@slot +"[0]") ) {
				mes "The slot that you've selected is already taken by another mission. Please select another (empty) slot!";
				close;
			}
			mes "Select a mission to accept below:";
			mes "^00CC00Green missions^000000 are within your level range and can be accepted.";
			mes "^FF0000Red missions^000000 can not be accepted. The reason(s) can be: you're not within the level range or the daily cool-down delay hasn't passed yet.";
			if ( basejob == Job_Novice || basejob == Job_SuperNovice ) set .@basejob, pow(2,0);
			else if ( basejob == Job_Swordman ) set .@basejob, pow(2,1);
			else if ( basejob == Job_Mage ) set .@basejob, pow(2,2);
			else if ( basejob == Job_Archer ) set .@basejob, pow(2,3);
			else if ( basejob == Job_Acolyte ) set .@basejob, pow(2,4);
			else if ( basejob == Job_Merchant ) set .@basejob, pow(2,5);
			else if ( basejob == Job_Thief ) set .@basejob, pow(2,6);
			else if ( basejob == Job_Knight ) set .@basejob, pow(2,7);
			else if ( basejob == Job_Priest ) set .@basejob, pow(2,8);
			else if ( basejob == Job_Wizard ) set .@basejob, pow(2,9);
			else if ( basejob == Job_Blacksmith ) set .@basejob, pow(2,10);
			else if ( basejob == Job_Hunter ) set .@basejob, pow(2,11);
			else if ( basejob == Job_Assassin ) set .@basejob, pow(2,12);
			else if ( basejob == Job_Crusader ) set .@basejob, pow(2,13);
			else if ( basejob == Job_Monk ) set .@basejob, pow(2,14);
			else if ( basejob == Job_Sage ) set .@basejob, pow(2,15);
			else if ( basejob == Job_Rogue ) set .@basejob, pow(2,16);
			else if ( basejob == Job_Alchemist ) set .@basejob, pow(2,17);
			else if ( basejob == Job_Bard || basejob == Job_Dancer ) set .@basejob, pow(2,18);
			else if ( basejob == Job_Taekwon ) set .@basejob, pow(2,19);
			else if ( basejob == Job_Star_Gladiator ) set .@basejob, pow(2,20);
			else if ( basejob == Job_Soul_Linker ) set .@basejob, pow(2,21);
			else if ( basejob == Job_Gunslinger ) set .@basejob, pow(2,22);
			else if ( basejob == Job_Ninja ) set .@basejob, pow(2,23);
			next;
			while (1) {
				set .@menu$, "";
				set .@i, 0;
				set .@size1, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) );
				set .@size2, getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) );
				while ( .@i < .@size1 ) {
					set .@j, 1;
					while ( .@j < .@size2 && getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@j +"]") != getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") )
						set .@j, .@j +1 ;
					set .@color$, "^00AA00";
					if ( .@j != .@size2 && .@size2 ||
						@ms_b_m_1[0] == getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") ||
						@ms_b_m_2[0] == getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") ||
						@ms_b_m_3[0] == getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") ||
						@ms_b_m_4[0] == getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") ||
						getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[3]") && ( BaseLevel < getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[3]") || BaseLevel > getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[4]") ) ||
						getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[2]") && getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[2]") & .@basejob == 0 )
						set .@color$, "^FF0000";
					set .@menu$, .@menu$ + .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$") +":";
					set .@i, .@i +1 ;
				}
				set .@menu, select(.@menu$) -1;
				set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
				mes "["+ strnpcinfo(1) +"]";
				mes "^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[0]") +"^000000";
				mes "Description: ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[1]") +"^000000";
				if ( getd(".ms_b_m_"+ .@m_id +"[6]") ) {
					for ( set .@i, 1; .@i < .@size2; set .@i, .@i +1 ) {
						if ( getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") == .@m_id ) break;
					}
					mes "Status : "+( ( .@i == .@size2 || getd("@ms_b_n_"+ strnpcinfo(2)) == 0 )?"^FF0000Incomplete":"^00CC00Completed" )+"^000000";
				}
				mes " ";
				set .@size, getarraysize( getd(".ms_b_t_"+ .@m_id) );
				for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
					mes "Require Mobs : ^0000FF"+ getd(".ms_b_t_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getmonsterinfo( getd(".ms_b_t_"+ .@m_id +"["+ .@i +"]") , 0) +"^000000";
				set .@size, getarraysize( getd(".ms_b_ir_"+ .@m_id) );
				for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
					mes "Require Items : ^0000FF"+ getd(".ms_b_ir_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ir_"+ .@m_id +"["+ .@i +"]") ) +"^000000";
				mes " ";
				if ( getd(".ms_b_m_"+ .@m_id +"[6]") || getd(".ms_b_m_"+ .@m_id +"[3]") || getd(".ms_b_m_"+ .@m_id +"[5]") || getd(".ms_b_m_"+ .@m_id +"[2]") ) {
					mes "[^FF0000Limitations^000000]";
					if ( getd(".ms_b_m_"+ .@m_id +"[6]") )
						mes "Can do : "+( ( getd(".ms_b_m_"+ .@m_id +"[6]") == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
					if ( getd(".ms_b_m_"+ .@m_id +"[3]") )
						mes "Base Level :"+( ( getd(".ms_b_m_"+ .@m_id +"[3]") )?"  ^0000FF"+ getd(".ms_b_m_"+ .@m_id +"[3]") +( ( getd(".ms_b_m_"+ .@m_id +"[3]") != getd(".ms_b_m_"+ .@m_id +"[4]") )?"~"+ getd(".ms_b_m_"+ .@m_id +"[4]"):"" )+"^000000":"" );
					if ( getd(".ms_b_m_"+ .@m_id +"[5]") )
						mes "Time Limit : ^FF0000"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") /60 )?getd(".ms_b_m_"+ .@m_id +"[5]") /60 +" hour"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?" ":"" ):"" )+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?getd(".ms_b_m_"+ .@m_id +"[5]") %60 +" min":"" )+"^000000";
					if ( getd(".ms_b_m_"+ .@m_id +"[2]") ) {
						deletearray .@joblimit;
						for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
							if ( getd(".ms_b_m_"+ .@m_id +"[2]") & pow( 2, .@i ) ) {
								set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
							}
						}
						set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
						set .@size, getarraysize(.@joblimit);
						for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
							set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
						mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
					}
					mes " ";
				}
				mes "[^009900Rewards^000000]";
				if ( getd(".ms_b_m_"+ .@m_id +"[7]") )
					mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[7]") ) +"^000000";
				if ( getd(".ms_b_m_"+ .@m_id +"[8]") )
					mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[8]") ) +"^000000";
				if ( getd(".ms_b_m_"+ .@m_id +"[9]") )
					mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[9]") ) +"^000000";
				if ( getd(".ms_b_m_"+ .@m_id +"[10]") )
					mes "Mission Points : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[10]") ) +"^000000";
				set .@size, getarraysize( getd(".ms_b_ia_"+ .@m_id ) );
				for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
					mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ .@m_id +"["+ .@i +"]") ) +"^000000";
				next;
				if ( select ( "- Accept this mission", "- Pick another mission" ) == 1 ) {
					for ( set .@i, 1; .@i < .@size2; set .@i, .@i +1 ) {
						if ( getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") == .@m_id ) {
							mes "["+ strnpcinfo(1) +"]";
							mes "It appears that you have already completed this mission. This mission can either only be completed once, or the daily cool-down delay hasn't passed yet!";
							set .@break, 1;
							next;
							break;
						}
					}
					if ( .@break == 0 && ( @ms_b_m_1[0] == .@m_id || @ms_b_m_2[0] == .@m_id || @ms_b_m_3[0] == .@m_id || @ms_b_m_4[0] == .@m_id ) ) {
						mes "["+ strnpcinfo(1) +"]";
						mes "You already taken this mission";
						set .@break, 1;
						next;
					}
					if ( .@break == 0 && getd(".ms_b_m_"+ .@m_id +"[3]") && ( BaseLevel < getd(".ms_b_m_"+ .@m_id +"[3]") || BaseLevel > getd(".ms_b_m_"+ .@m_id +"[4]") ) ) {
						mes "["+ strnpcinfo(1) +"]";
						mes "You're not within the level range to accept this mission!";
						set .@break, 1;
						next;
					}
					if ( .@break == 0 && getd(".ms_b_m_"+ .@m_id +"[2]") ) {
						if ( getd(".ms_b_m_"+ .@m_id +"[2]") & .@basejob == 0 ) {
							mes "["+ strnpcinfo(1) +"]";
							mes "Your current job class is not allowed to do this mission";
							set .@break, 1;
							next;
						}
					}
					if ( .@break == 0 ) break;
				}
				set .@break, 0;
			}
			mes "["+ strnpcinfo(1) +"]";
			mes "You have accepted the following mission:";
			mes "^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[0]") +"^000000";
			if ( getd(".ms_b_m_"+ .@m_id +"[5]") ) {
				mes "Time Left : ^FF0000"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") /60 )?getd(".ms_b_m_"+ .@m_id +"[5]") /60 +" hour"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?" ":"" ):"" )+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?getd(".ms_b_m_"+ .@m_id +"[5]") %60 +" min":"" )+"^000000";
				addtimer getd(".ms_b_m_"+ .@m_id +"[5]") * 60 * 1000, "ms_b_::OnQuest"+ .@slot +"TimeUp";
				setd "@ms_b_m_"+ .@slot +"[1]", gettimetick(2) + getd(".ms_b_m_"+ .@m_id +"[5]") * 60;
			}
			setd "@ms_b_m_"+ .@slot +"[0]", .@m_id;
			setd "ms_b_m_"+ .@slot +"$", getd("@ms_b_m_"+ .@slot +"[0]") +"#"+ getd("@ms_b_m_"+ .@slot +"[1]");
			close;
		case 4:
			if ( getgmlevel() < 99 ) end;
			while (1) {
				mes "["+ strnpcinfo(1) +"]";
				mes "Please select an option below:";
				next;
				switch ( select ( "Setup a mission", "Edit a mission", "Remove a mission", "Swap mission order" ) ) {
					case 1:
						if ( $ms_b_id >= 99999 ) {
							mes "["+ strnpcinfo(1) +"]";
							mes "This is the end, you can't create anymore missions";
							close;
						}
						else if ( getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ) == 40 ) {
							mes "["+ strnpcinfo(1) +"]";
							mes "Each NPC are only allowed to setup 40 missions";
							next;
							break;
						}
						deletearray @tmp_ms_b_m_$;
						deletearray @tmp_ms_b_m_;
						deletearray @tmp_ms_b_t_;
						deletearray @tmp_ms_b_ir_;
						deletearray @tmp_ms_b_ia_;
						if ( callsub( L_setupmission, 0 ) == 0 ) {
							deletearray @tmp_ms_b_m_$;
							deletearray @tmp_ms_b_m_;
							deletearray @tmp_ms_b_t_;
							deletearray @tmp_ms_b_ir_;
							deletearray @tmp_ms_b_ia_;
							break;
						}
						set $ms_b_id, $ms_b_id +1 ;
						setd ".ms_b_n_"+ strnpcinfo(2) +"["+ getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ) +"]", $ms_b_id;
						setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd(".ms_b_n_"+ strnpcinfo(2) +"[0]");
						set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) );
						for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
							setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
						set @tmp_ms_b_m_[11], strnpcinfo(2);
						copyarray getd(".ms_b_m_"+ $ms_b_id +"$"), @tmp_ms_b_m_$, 128;
						copyarray getd(".ms_b_m_"+ $ms_b_id), @tmp_ms_b_m_, 128;
						copyarray getd(".ms_b_t_"+ $ms_b_id ), @tmp_ms_b_t_, 128;
						copyarray getd(".ms_b_ir_"+ $ms_b_id ), @tmp_ms_b_ir_, 128;
						copyarray getd(".ms_b_ia_"+ $ms_b_id ), @tmp_ms_b_ia_, 128;
						setarray getd("$ms_b_m_"+ $ms_b_id +"$"),
							@tmp_ms_b_m_$[0],
							@tmp_ms_b_m_$[1],
							( ( @tmp_ms_b_m_[2] )?@tmp_ms_b_m_[2]:"" )+"#"+( ( @tmp_ms_b_m_[3] )?@tmp_ms_b_m_[3]:"" )+"#"+( ( @tmp_ms_b_m_[4] )?@tmp_ms_b_m_[4]:"" )+"#"+( ( @tmp_ms_b_m_[5] )?@tmp_ms_b_m_[5]:"" )+"#"+( ( @tmp_ms_b_m_[6] )?@tmp_ms_b_m_[6]:"" )+"#"+( ( @tmp_ms_b_m_[7] )?@tmp_ms_b_m_[7]:"" )+"#"+( ( @tmp_ms_b_m_[8] )?@tmp_ms_b_m_[8]:"" )+"#"+( ( @tmp_ms_b_m_[9] )?@tmp_ms_b_m_[9]:"" )+"#"+( ( @tmp_ms_b_m_[10] )?@tmp_ms_b_m_[10]:"" )+"#"+( ( @tmp_ms_b_m_[11] )?@tmp_ms_b_m_[11]:"" )+"#"+( ( @tmp_ms_b_m_[12] )?@tmp_ms_b_m_[12]:"" )+"#"+( ( @tmp_ms_b_m_[13] )?@tmp_ms_b_m_[13]:"" ),
							( ( @tmp_ms_b_t_[0] )?@tmp_ms_b_t_[0]:"" )+"#"+( ( @tmp_ms_b_t_[1] )?@tmp_ms_b_t_[1]:"" )+"#"+( ( @tmp_ms_b_t_[2] )?@tmp_ms_b_t_[2]:"" )+"#"+( ( @tmp_ms_b_t_[3] )?@tmp_ms_b_t_[3]:"" )+"#"+( ( @tmp_ms_b_t_[4] )?@tmp_ms_b_t_[4]:"" )+"#"+( ( @tmp_ms_b_t_[5] )?@tmp_ms_b_t_[5]:"" )+"#"+( ( @tmp_ms_b_t_[6] )?@tmp_ms_b_t_[6]:"" )+"#"+( ( @tmp_ms_b_t_[7] )?@tmp_ms_b_t_[7]:"" )+"#"+( ( @tmp_ms_b_t_[8] )?@tmp_ms_b_t_[8]:"" )+"#"+( ( @tmp_ms_b_t_[9] )?@tmp_ms_b_t_[9]:"" )+"#"+( ( @tmp_ms_b_t_[10] )?@tmp_ms_b_t_[10]:"" )+"#"+( ( @tmp_ms_b_t_[11] )?@tmp_ms_b_t_[11]:"" )+"#"+( ( @tmp_ms_b_t_[12] )?@tmp_ms_b_t_[12]:"" )+"#"+( ( @tmp_ms_b_t_[13] )?@tmp_ms_b_t_[13]:"" )+"#"+( ( @tmp_ms_b_t_[14] )?@tmp_ms_b_t_[14]:"" )+"#"+( ( @tmp_ms_b_t_[15] )?@tmp_ms_b_t_[15]:"" )+"#"+( ( @tmp_ms_b_ir_[0] )?@tmp_ms_b_ir_[0]:"" )+"#"+( ( @tmp_ms_b_ir_[1] )?@tmp_ms_b_ir_[1]:"" )+"#"+( ( @tmp_ms_b_ir_[2] )?@tmp_ms_b_ir_[2]:"" )+"#"+( ( @tmp_ms_b_ir_[3] )?@tmp_ms_b_ir_[3]:"" )+"#"+( ( @tmp_ms_b_ir_[4] )?@tmp_ms_b_ir_[4]:"" )+"#"+( ( @tmp_ms_b_ir_[5] )?@tmp_ms_b_ir_[5]:"" )+"#"+( ( @tmp_ms_b_ir_[6] )?@tmp_ms_b_ir_[6]:"" )+"#"+( ( @tmp_ms_b_ir_[7] )?@tmp_ms_b_ir_[7]:"" )+"#"+( ( @tmp_ms_b_ir_[8] )?@tmp_ms_b_ir_[8]:"" )+"#"+( ( @tmp_ms_b_ir_[9] )?@tmp_ms_b_ir_[9]:"" )+"#"+( ( @tmp_ms_b_ia_[0] )?@tmp_ms_b_ia_[0]:"" )+"#"+( ( @tmp_ms_b_ia_[1] )?@tmp_ms_b_ia_[1]:"" )+"#"+( ( @tmp_ms_b_ia_[2] )?@tmp_ms_b_ia_[2]:"" )+"#"+( ( @tmp_ms_b_ia_[3] )?@tmp_ms_b_ia_[3]:"" )+"#"+( ( @tmp_ms_b_ia_[4] )?@tmp_ms_b_ia_[4]:"" )+"#"+( ( @tmp_ms_b_ia_[5] )?@tmp_ms_b_ia_[5]:"" )+"#"+( ( @tmp_ms_b_ia_[6] )?@tmp_ms_b_ia_[6]:"" )+"#"+( ( @tmp_ms_b_ia_[7] )?@tmp_ms_b_ia_[7]:"" )+"#"+( ( @tmp_ms_b_ia_[8] )?@tmp_ms_b_ia_[8]:"" )+"#"+( ( @tmp_ms_b_ia_[9] )?@tmp_ms_b_ia_[9]:"" );
						deletearray @tmp_ms_b_m_$;
						deletearray @tmp_ms_b_m_;
						deletearray @tmp_ms_b_t_;
						deletearray @tmp_ms_b_ir_;
						deletearray @tmp_ms_b_ia_;
						mes " ";
						mes "Mission has setup successfully";
						next;
						break;
					case 2:
						mes "["+ strnpcinfo(1) +"]";
						if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
							mes "There is no mission available to edit.";
							next;
							break;
						}
						mes "Select a mission below to edit:";
						next;
						if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 0 ) set .@color$, "^0000FF";
						else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 1 ) set .@color$, "^00CC00";
						else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 2 ) set .@color$, "^FF0000";
						set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
						set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) );
						for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 ) {
							if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 0 ) set .@color$, "^0000FF";
							else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 1 ) set .@color$, "^00CC00";
							else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 2 ) set .@color$, "^FF0000";
							set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
						}
						set .@menu$, .@menu$ +":^000000 - back";
						set .@menu, select(.@menu$) -1;
						if ( .@menu == .@size ) break;
						set @m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
						deletearray @tmp_ms_b_m_$;
						deletearray @tmp_ms_b_m_;
						deletearray @tmp_ms_b_t_;
						deletearray @tmp_ms_b_ir_;
						deletearray @tmp_ms_b_ia_;
						copyarray @tmp_ms_b_m_$, getd("$ms_b_m_"+ @m_id +"$"), 128;
						copyarray @tmp_ms_b_m_, getd(".ms_b_m_"+ @m_id ), 128;
						copyarray @tmp_ms_b_t_, getd(".ms_b_t_"+ @m_id ), 128;
						copyarray @tmp_ms_b_ir_, getd(".ms_b_ir_"+ @m_id ), 128;
						copyarray @tmp_ms_b_ia_, getd(".ms_b_ia_"+ @m_id ), 128;
						if ( callsub( L_setupmission, 1 ) == 0 ) {
							deletearray @tmp_ms_b_m_$;
							deletearray @tmp_ms_b_m_;
							deletearray @tmp_ms_b_t_;
							deletearray @tmp_ms_b_ir_;
							deletearray @tmp_ms_b_ia_;
							set @m_id, 0;
							break;
						}
						copyarray getd(".ms_b_m_"+ @m_id +"$"), @tmp_ms_b_m_$, 128;
						copyarray getd(".ms_b_m_"+ @m_id), @tmp_ms_b_m_, 128;
						copyarray getd(".ms_b_t_"+ @m_id ), @tmp_ms_b_t_, 128;
						copyarray getd(".ms_b_ir_"+ @m_id ), @tmp_ms_b_ir_, 128;
						copyarray getd(".ms_b_ia_"+ @m_id ), @tmp_ms_b_ia_, 128;
						setarray getd("$ms_b_m_"+ @m_id +"$"),
							@tmp_ms_b_m_$[0],
							@tmp_ms_b_m_$[1],
							( ( @tmp_ms_b_m_[2] )?@tmp_ms_b_m_[2]:"" )+"#"+( ( @tmp_ms_b_m_[3] )?@tmp_ms_b_m_[3]:"" )+"#"+( ( @tmp_ms_b_m_[4] )?@tmp_ms_b_m_[4]:"" )+"#"+( ( @tmp_ms_b_m_[5] )?@tmp_ms_b_m_[5]:"" )+"#"+( ( @tmp_ms_b_m_[6] )?@tmp_ms_b_m_[6]:"" )+"#"+( ( @tmp_ms_b_m_[7] )?@tmp_ms_b_m_[7]:"" )+"#"+( ( @tmp_ms_b_m_[8] )?@tmp_ms_b_m_[8]:"" )+"#"+( ( @tmp_ms_b_m_[9] )?@tmp_ms_b_m_[9]:"" )+"#"+( ( @tmp_ms_b_m_[10] )?@tmp_ms_b_m_[10]:"" )+"#"+( ( @tmp_ms_b_m_[11] )?@tmp_ms_b_m_[11]:"" )+"#"+( ( @tmp_ms_b_m_[12] )?@tmp_ms_b_m_[12]:"" )+"#"+( ( @tmp_ms_b_m_[13] )?@tmp_ms_b_m_[13]:"" ),
							( ( @tmp_ms_b_t_[0] )?@tmp_ms_b_t_[0]:"" )+"#"+( ( @tmp_ms_b_t_[1] )?@tmp_ms_b_t_[1]:"" )+"#"+( ( @tmp_ms_b_t_[2] )?@tmp_ms_b_t_[2]:"" )+"#"+( ( @tmp_ms_b_t_[3] )?@tmp_ms_b_t_[3]:"" )+"#"+( ( @tmp_ms_b_t_[4] )?@tmp_ms_b_t_[4]:"" )+"#"+( ( @tmp_ms_b_t_[5] )?@tmp_ms_b_t_[5]:"" )+"#"+( ( @tmp_ms_b_t_[6] )?@tmp_ms_b_t_[6]:"" )+"#"+( ( @tmp_ms_b_t_[7] )?@tmp_ms_b_t_[7]:"" )+"#"+( ( @tmp_ms_b_t_[8] )?@tmp_ms_b_t_[8]:"" )+"#"+( ( @tmp_ms_b_t_[9] )?@tmp_ms_b_t_[9]:"" )+"#"+( ( @tmp_ms_b_t_[10] )?@tmp_ms_b_t_[10]:"" )+"#"+( ( @tmp_ms_b_t_[11] )?@tmp_ms_b_t_[11]:"" )+"#"+( ( @tmp_ms_b_t_[12] )?@tmp_ms_b_t_[12]:"" )+"#"+( ( @tmp_ms_b_t_[13] )?@tmp_ms_b_t_[13]:"" )+"#"+( ( @tmp_ms_b_t_[14] )?@tmp_ms_b_t_[14]:"" )+"#"+( ( @tmp_ms_b_t_[15] )?@tmp_ms_b_t_[15]:"" )+"#"+( ( @tmp_ms_b_ir_[0] )?@tmp_ms_b_ir_[0]:"" )+"#"+( ( @tmp_ms_b_ir_[1] )?@tmp_ms_b_ir_[1]:"" )+"#"+( ( @tmp_ms_b_ir_[2] )?@tmp_ms_b_ir_[2]:"" )+"#"+( ( @tmp_ms_b_ir_[3] )?@tmp_ms_b_ir_[3]:"" )+"#"+( ( @tmp_ms_b_ir_[4] )?@tmp_ms_b_ir_[4]:"" )+"#"+( ( @tmp_ms_b_ir_[5] )?@tmp_ms_b_ir_[5]:"" )+"#"+( ( @tmp_ms_b_ir_[6] )?@tmp_ms_b_ir_[6]:"" )+"#"+( ( @tmp_ms_b_ir_[7] )?@tmp_ms_b_ir_[7]:"" )+"#"+( ( @tmp_ms_b_ir_[8] )?@tmp_ms_b_ir_[8]:"" )+"#"+( ( @tmp_ms_b_ir_[9] )?@tmp_ms_b_ir_[9]:"" )+"#"+( ( @tmp_ms_b_ia_[0] )?@tmp_ms_b_ia_[0]:"" )+"#"+( ( @tmp_ms_b_ia_[1] )?@tmp_ms_b_ia_[1]:"" )+"#"+( ( @tmp_ms_b_ia_[2] )?@tmp_ms_b_ia_[2]:"" )+"#"+( ( @tmp_ms_b_ia_[3] )?@tmp_ms_b_ia_[3]:"" )+"#"+( ( @tmp_ms_b_ia_[4] )?@tmp_ms_b_ia_[4]:"" )+"#"+( ( @tmp_ms_b_ia_[5] )?@tmp_ms_b_ia_[5]:"" )+"#"+( ( @tmp_ms_b_ia_[6] )?@tmp_ms_b_ia_[6]:"" )+"#"+( ( @tmp_ms_b_ia_[7] )?@tmp_ms_b_ia_[7]:"" )+"#"+( ( @tmp_ms_b_ia_[8] )?@tmp_ms_b_ia_[8]:"" )+"#"+( ( @tmp_ms_b_ia_[9] )?@tmp_ms_b_ia_[9]:"" );
						deletearray @tmp_ms_b_m_$;
						deletearray @tmp_ms_b_m_;
						deletearray @tmp_ms_b_t_;
						deletearray @tmp_ms_b_ir_;
						deletearray @tmp_ms_b_ia_;
						set @m_id, 0;
						mes " ";
						mes "Mission has edited successfully";
						next;
						break;
					case 3:
						mes "["+ strnpcinfo(1) +"]";
						if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
							mes "There is no mission available to remove.";
							next;
							break;
						}
						mes "Select a mission below to delete:";
						next;
						if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 0 ) set .@color$, "^0000FF";
						else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 1 ) set .@color$, "^00CC00";
						else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 2 ) set .@color$, "^FF0000";
						set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
						set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) );
						for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 ) {
							if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 0 ) set .@color$, "^0000FF";
							else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 1 ) set .@color$, "^00CC00";
							else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 2 ) set .@color$, "^FF0000";
							set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
						}
						set .@menu$, .@menu$ +":^000000 - back";
						set .@menu, select(.@menu$) -1;
						if ( .@menu == .@size ) break;
						mes "["+ strnpcinfo(1) +"]";
						mes "Are you sure that you want to delete the selected mission?";
						mes " ";
						set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
						if ( getd(".ms_b_m_"+ .@m_id +"[6]") == 0 ) set .@color$, "^0000FF";
						else if ( getd(".ms_b_m_"+ .@m_id +"[6]") == 1 ) set .@color$, "^00CC00";
						else if ( getd(".ms_b_m_"+ .@m_id +"[6]") == 2 ) set .@color$, "^FF0000";
						mes "^996600"+ .@m_id +". "+ .@color$ + getd("$ms_b_m_"+ .@m_id +"$") +"^000000";
						mes "Description: ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[1]") +"^000000";
						next;
						if ( select ( "No", "Yes" ) == 1 ) break;
						mes "["+ strnpcinfo(1) +"]";
						mes "Mission has deleted successfully";
						mes " ";
						mes "^996600"+ .@m_id +". "+ .@color$ + getd("$ms_b_m_"+ .@m_id +"$") +"^000000";
						deletearray getd(".ms_b_m_"+ .@m_id +"$");
						deletearray getd(".ms_b_m_"+ .@m_id );
						deletearray getd(".ms_b_t_"+ .@m_id );
						deletearray getd(".ms_b_ir_"+ .@m_id );
						deletearray getd(".ms_b_ia_"+ .@m_id );
						deletearray getd("$ms_b_m_"+ .@m_id +"$");
						deletearray getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]"), 1;
						setd "$ms_b_n_"+ strnpcinfo(2) +"$", ( ( getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") )?getd(".ms_b_n_"+ strnpcinfo(2) +"[0]"):"" );
						set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) );
						for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
							setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"#";
						next;
						break;
					case 4:
						mes "["+ strnpcinfo(1) +"]";
						if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
							mes "There is no mission available to swap";
							next;
							break;
						}
						mes "Select a mission below to swap:";
						next;
						if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 0 ) set .@color$, "^0000FF";
						else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 1 ) set .@color$, "^00CC00";
						else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"[6]") == 2 ) set .@color$, "^FF0000";
						set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
						set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) );
						for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 ) {
							if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 0 ) set .@color$, "^0000FF";
							else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 1 ) set .@color$, "^00CC00";
							else if ( getd(".ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 2 ) set .@color$, "^FF0000";
							set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". "+ .@color$ + getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
						}
						set .@menu$, .@menu$ +":^000000 - back";
						set .@menu, select(.@menu$) -1;
						if ( .@menu == .@size ) break;
						mes "["+ strnpcinfo(1) +"]";
						mes "mission selected :";
						set .@m_id1, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
						if ( getd(".ms_b_m_"+ .@m_id1 +"[6]") == 0 ) set .@color1$, "^0000FF";
						else if ( getd(".ms_b_m_"+ .@m_id1 +"[6]") == 1 ) set .@color1$, "^00CC00";
						else if ( getd(".ms_b_m_"+ .@m_id1 +"[6]") == 2 ) set .@color1$, "^FF0000";
						mes "^996600"+ .@m_id1 +". "+ .@color1$ + getd("$ms_b_m_"+ .@m_id1 +"$") +"^000000";
						mes " ";
						mes "Please select another mission to be swapped:";
						next;
						set .@menu2, select(.@menu$) -1;
						if ( .@menu2 == .@size ) break;
						mes "["+ strnpcinfo(1) +"]";
						mes "Missions has swapped successfully";
						set .@m_id2, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu2 +"]");
						if ( getd(".ms_b_m_"+ .@m_id2 +"[6]") == 0 ) set .@color2$, "^0000FF";
						else if ( getd(".ms_b_m_"+ .@m_id2 +"[6]") == 1 ) set .@color2$, "^00CC00";
						else if ( getd(".ms_b_m_"+ .@m_id2 +"[6]") == 2 ) set .@color2$, "^FF0000";
						mes "^996600"+ .@m_id1 +". "+ .@color1$ + getd("$ms_b_m_"+ .@m_id1 +"$") +"^000000";
						mes "^996600"+ .@m_id2 +". "+ .@color2$ + getd("$ms_b_m_"+ .@m_id2 +"$") +"^000000";
						setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]", .@m_id2;
						setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu2 +"]", .@m_id1;
						setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd(".ms_b_n_"+ strnpcinfo(2) +"[0]");
						set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) );
						for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
							setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
						next;
						break;
				}
			}
	}
	close;
OnQuest1TimeUp:
	dispbottom "Mission #1: "+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]") +" has Time Up";
	deletearray @ms_b_m_1;
	set ms_b_m_1$, "";
	end;
OnQuest2TimeUp:
	dispbottom "Mission #2: "+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]") +" has Time Up";
	deletearray @ms_b_m_2;
	set ms_b_m_2$, "";
	end;
OnQuest3TimeUp:
	dispbottom "Mission #3: "+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]") +" has Time Up";
	deletearray @ms_b_m_3;
	set ms_b_m_3$, "";
	end;
OnQuest4TimeUp:
	dispbottom "Mission #4: "+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]") +" has Time Up";
	deletearray @ms_b_m_4;
	set ms_b_m_4$, "";
	end;
L_showprogress:
	mes "^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[0]") +"^000000";
	mes "Description: ^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[1]") +"^000000";
	mes " ";
	mes "[^804000Mission Progress^000000]";
	if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[5]") ) {
		set .@left, getd("@ms_b_m_"+ @slot +"[1]") - gettimetick(2);
		set .@hour, .@left / 3600;
		set .@min, .@left % 3600 / 60;
		set .@sec, .@left % 60;
		mes "Time Left:  ^FF0000"+( ( .@hour )?.@hour +" hour ":"" )+( ( .@hour || .@min )?.@min +" min ":"" )+ .@sec +" sec^000000";
	}
	set .@size, getarraysize( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
	for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
		mes "Mobs : ^0000FF"+ getmonsterinfo( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") , 0) +"^000000 ["+( ( getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") > getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") )?getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]"):getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") ) +"/"+ getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +"]";
	set .@size, getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
	for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
		mes "Items : ^0000FF"+ getitemname( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000 ["+ countitem( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"/"+ getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +"]";
	mes " ";
	mes "[^009900Rewards^000000]";
	if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") )
		mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) +"^000000";
	if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") )
		mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) +"^000000";
	if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") )
		mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +"^000000";
	if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") )
		mes "Mission Points : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +"^000000";
	set .@size, getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) );
	for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
	mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000";
	mes " ";
	return;
L_setupmission:
	while (1) {
		mes "["+ strnpcinfo(1) +"]";
		mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
		mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
		mes " ";
		if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
			mes "Require mobs : ^FF0000Incomplete^000000";
		set .@size, getarraysize(@tmp_ms_b_t_);
		for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
			mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
		if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
			mes "Require items : ^FF0000Incomplete^000000";
		set .@size, getarraysize(@tmp_ms_b_ir_);
		for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
			mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
		mes " ";
		if ( @tmp_ms_b_m_[6] || @tmp_ms_b_m_[3] || @tmp_ms_b_m_[5] || @tmp_ms_b_m_[2] ) {
			mes "[^FF0000Limitations^000000]";
			if ( @tmp_ms_b_m_[6] )
				mes "Can do : "+( ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
			if ( @tmp_ms_b_m_[3] )
				mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?"  ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
			if ( @tmp_ms_b_m_[5] )
				mes "Time Limit : ^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000";
			if ( @tmp_ms_b_m_[2] ) {
				deletearray .@joblimit;
				for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
					if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
						set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
					}
				}
				set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
				set .@size, getarraysize(.@joblimit);
				for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
					set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
				mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
			}
			mes " ";
		}
		mes "[^009900Rewards^000000]";
		if ( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ )
			set .@color_reward$, "";
		else {
			mes "^FF0000Incomplete^000000";
			set .@color_reward$, "  - ^FF0000Incomplete^000000";
		}
		if ( @tmp_ms_b_m_[7] )
			mes "Base Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ) +"^000000";
		if ( @tmp_ms_b_m_[8] )
			mes "Job Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ) +"^000000";
		if ( @tmp_ms_b_m_[9] )
			mes "Zeny : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ) +"^000000";
		if ( @tmp_ms_b_m_[10] )
			mes "Mission Points : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ) +"^000000";
		set .@size, getarraysize(@tmp_ms_b_ia_);
		for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
			mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
		next;
		if ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) &&
			( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ ) )
			set .@color_all$, "^00CC00";
		else
			set .@color_all$, "^FF0000";
		set .@setupmenu, select (
			"Important Settings"+( ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) )?"":"  - ^FF0000Incomplete^000000" ),
			"Mission Limitations",
			"Rewards"+ .@color_reward$,
			.@color_all$ +"Complete "+( ( getarg(0) )?"Edit":"Setup" )+"^000000",
			"- back" );
		switch ( .@setupmenu ) {
			case 1:
				while (1) {
					mes "["+ strnpcinfo(1) +"]";
					mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
					mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
					mes " ";
					if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
						mes "Require mobs : ^FF0000Incomplete^000000";
					set .@size, getarraysize(@tmp_ms_b_t_);
					for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
						mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
					if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
						mes "Require items : ^FF0000Incomplete^000000";
					set .@size, getarraysize(@tmp_ms_b_ir_);
					for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
						mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
					next;
					set .@importantmenu, select (
						"Mission Name"+( ( @tmp_ms_b_m_$[0] != "" )?"":"  - ^FF0000Incomplete^000000" ),
						"Description"+( ( @tmp_ms_b_m_$[1] != "" )?"":"  - ^FF0000Incomplete^000000" ),
						"Require Mobs",
						"Require Items",
						"- back" );
					switch ( .@importantmenu ) {
						case 1:
							mes "["+ strnpcinfo(1) +"]";
							mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Input the mission name";
							next;
							input .@tmp$;
							mes "["+ strnpcinfo(1) +"]";
							if ( getstrlen(.@tmp$) > 60 ) {
								mes "Mission name must not more than 60 characters";
								next;
								break;
							}
							else if ( compare ( .@tmp$, ":" ) || compare ( .@tmp$, "^" ) ) {
								mes "Mission name must not allow to use these symbols";
								mes "-> : <- colon";
								mes "-> ^ <- caret";
								next;
								break;
							}
							mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Are you sure to change the name to";
							mes "^0000FF"+ .@tmp$ +"^000000";
							next;
							if ( select ( "Yes", "No" ) == 2 ) break;
							set @tmp_ms_b_m_$[0], .@tmp$;
							break;
						case 2:
							mes "["+ strnpcinfo(1) +"]";
							mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Input the descriptions";
							next;
							set .@tmp1$, "";
							set .@tmp2$, "";
							set .@tmp3$, "";
							set .@tmp, 0;
							do {
								set .@tmp, .@tmp +1 ;
								input getd(".@tmp"+ .@tmp +"$");
							} while ( getstrlen( getd(".@tmp"+ .@tmp +"$") ) > 50 && .@tmp < 3 );
							mes "["+ strnpcinfo(1) +"]";
							mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Are you sure to change description to";
							mes "^0000FF"+ .@tmp1$ + .@tmp2$ + .@tmp3$ +"^000000";
							next;
							if ( select ( "Yes", "No" ) == 2 ) break;
							set @tmp_ms_b_m_$[1], .@tmp1$ + .@tmp2$ + .@tmp3$;
							break;
						case 3:
							if ( getarg(0) ) {
								mes "["+ strnpcinfo(1) +"]";
								mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
								mes " ";
								mes "Require Mobs are not allow to edit";
								next;
								break;
							}
							while (1) {
								mes "["+ strnpcinfo(1) +"]";
								mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
								mes " ";
								if ( @tmp_ms_b_t_ == 0 )
									mes "Require mobs :";
								set .@size, getarraysize(@tmp_ms_b_t_);
								for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
									mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
								next;
								set .@mobmenu, select ( "Add a monster requirement", "Remove a monster requirement", "- back" );
								switch ( .@mobmenu ) {
									case 1:
										mes "["+ strnpcinfo(1) +"]";
										mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_t_ == 0 )
											mes "Require mobs :";
										set .@size, getarraysize(@tmp_ms_b_t_);
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
											mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
										mes " ";
										if ( .@size == 16 ) {
											mes "Require mobs are only allow up to 8 different kinds";
											next;
											break;
										}
										mes "Input monster ID";
										next;
										input .@tmp, 0, 9999;
										mes "["+ strnpcinfo(1) +"]";
										if ( .@tmp == 0 ) {
											mes "Invalid monster ID";
											next;
											break;
										}
										else if ( getmonsterinfo(.@tmp, 1) == -1 ) {
											mes "Invalid monster ID";
											next;
											break;
										}
										if ( @tmp_ms_b_t_ == 0 )
											mes "Require mobs :";
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
											mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
										mes " ";
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
											if ( .@tmp == @tmp_ms_b_t_[.@i] ) break;
										}
										if ( .@i != .@size ) {
											mes "Monster ^0000FF"+ getmonsterinfo(.@tmp, 0) +"^000000 is Repeated";
											next;
											break;
										}
										mes "Require mobs : ^0000FF"+ getmonsterinfo(.@tmp, 0) +"^000000";
										mes "Input an amount need to be hunt";
										next;
										input .@tmp2, 0, 999;
										if ( .@tmp2 == 0 ) {
											mes "["+ strnpcinfo(1) +"]";
											mes "Invalid amount";
											next;
										}
										else
											setarray @tmp_ms_b_t_[ .@size ], .@tmp, .@tmp2;
										break;
									case 2:
										mes "["+ strnpcinfo(1) +"]";
										mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_t_ == 0 ) {
											mes "There are no monster to remove";
											next;
											break;
										}
										set .@size, getarraysize(@tmp_ms_b_t_);
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
											mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
										mes " ";
										mes "Select a mob to delete";
										next;
										set .@menu$, "^0000FF"+ @tmp_ms_b_t_[1] +" "+ getmonsterinfo(@tmp_ms_b_t_, 0);
										for ( set .@i, 2; .@i < .@size; set .@i, .@i +2 )
											set .@menu$, .@menu$ +":"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0);
										set .@menu$, .@menu$ +"^000000:- back";
										set .@menu, select(.@menu$) -1;
										if ( .@menu == .@size /2 ) break;
										deletearray @tmp_ms_b_t_[ .@menu *2 ], 2;
									case 3:
								}
								if ( .@mobmenu == 3 ) break;
							}
							break;
						case 4:
							while (1) {
								mes "["+ strnpcinfo(1) +"]";
								mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
								mes " ";
								if ( @tmp_ms_b_ir_ == 0 )
									mes "Require items :";
								set .@size, getarraysize(@tmp_ms_b_ir_);
								for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
									mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
								next;
								set .@item_require_menu, select ( "add item requirement", "remove a require item", "- back" );
								switch ( .@item_require_menu ) {
									case 1:
										mes "["+ strnpcinfo(1) +"]";
										mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ir_ == 0 )
											mes "Require items : ";
										set .@size, getarraysize(@tmp_ms_b_ir_);
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
											mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
										mes " ";
										if ( .@size == 10 ) {
											mes "Require items are only allow up to 5 different kinds";
											next;
											break;
										}
										mes "Input item ID";
										next;
										input .@tmp, 0, 32767;
										mes "["+ strnpcinfo(1) +"]";
										if ( getitemname(.@tmp) == "null" ) {
											mes "Invalid item ID";
											next;
											break;
										}
										mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ir_ == 0 )
											mes "Require items : ";
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
											mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
										mes " ";
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
											if ( .@tmp == @tmp_ms_b_ir_[.@i] ) break;
										}
										if ( .@i != .@size ) {
											mes "Item ^0000FF"+ getitemname(.@tmp) +"^000000 is repeated";
											next;
											break;
										}
										mes "Require items : ^0000FF"+ getitemname(.@tmp) +"^000000";
										mes "input the amount required for this item";
										next;
										input .@tmp2, 0, 30000;
										if ( .@tmp2 == 0 ) {
											mes "["+ strnpcinfo(1) +"]";
											mes "Invalid amount";
											next;
										}
										else
											setarray @tmp_ms_b_ir_[ .@size ], .@tmp, .@tmp2;
										break;
									case 2:
										mes "["+ strnpcinfo(1) +"]";
										mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ir_ == 0 ) {
											mes "There are no item to be remove";
											next;
											break;
										}
										set .@size, getarraysize(@tmp_ms_b_ir_);
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
											mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
										mes " ";
										mes "Select an item to delete";
										next;
										set .@menu$, "^0000FF"+ @tmp_ms_b_ir_[1] +" "+ getitemname(@tmp_ms_b_ir_);
										for ( set .@i, 2; .@i < .@size; set .@i, .@i +2 )
											set .@menu$, .@menu$ +":"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]);
										set .@menu$, .@menu$ +"^000000:- back";
										set .@menu, select(.@menu$) -1;
										if ( .@menu == .@size /2 ) break;
										deletearray @tmp_ms_b_ir_[ .@menu *2 ], 2;
									case 3:
								}
								if ( .@item_require_menu == 3 ) break;
							}
						case 5:
					}
					if ( .@importantmenu == 5 ) break;
				}
				break;
			case 2:
				while (1) {
					mes "["+ strnpcinfo(1) +"]";
					mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
					mes " ";
					mes "[^FF0000Limitations^000000]";
					mes "Can do : "+( ( @tmp_ms_b_m_[6] == 0 )?"^0000FFRepeatedly": ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
					mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?"  ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
					mes "Time Limit : "+( ( @tmp_ms_b_m_[5] )?"^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000":"" );
					if ( @tmp_ms_b_m_[2] == 0 )
						mes "Job Limit : ^FF0000<none>^000000";
					else {
						deletearray .@joblimit;
						for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
							if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
								set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
							}
						}
						set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
						set .@size, getarraysize(.@joblimit);
						for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
							set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
						mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
					}
					next;
					set .@limitmenu, select ( "Mission Status (Can do)", "Base Level", "Time Limit", "Job limitation", "- back" );
					switch ( .@limitmenu ) {
						case 1:
							mes "["+ strnpcinfo(1) +"]";
							mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Can do : "+( ( @tmp_ms_b_m_[6] == 0 )?"^0000FFRepeatedly": ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
							mes "Please select a status";
							next;
							switch ( select ( "^0000FFRepeatedly^000000", "^00CC00Everyday^000000", "^FF0000Only Once^000000" ) ) {
								case 1: set @tmp_ms_b_m_[6], 0; break;
								case 2: set @tmp_ms_b_m_[6], 1; break;
								case 3: set @tmp_ms_b_m_[6], 2;
							}
							break;
						case 2:
							mes "["+ strnpcinfo(1) +"]";
							mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Base Level :";
							mes " ";
							mes "Input starting range";
							next;
							input .@tmp, 0, 1000;
							if ( .@tmp == 0 ) {
								mes "["+ strnpcinfo(1) +"]";
								mes "invalid value";
								set @tmp_ms_b_m_[3], 0;
								set @tmp_ms_b_m_[4], 0;
								next;
								break;
							}
							mes "["+ strnpcinfo(1) +"]";
							mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Base Level : ^0000FF"+ .@tmp +"~^000000";
							mes " ";
							mes "Input ending range";
							next;
							input .@tmp2, 0, 1000;
							if ( .@tmp2 == 0 ) {
								mes "["+ strnpcinfo(1) +"]";
								mes "invalid value";
								set @tmp_ms_b_m_[3], 0;
								set @tmp_ms_b_m_[4], 0;
								next;
								break;
							}
							else if ( .@tmp > .@tmp2 ) {
								mes "["+ strnpcinfo(1) +"]";
								mes "Ending range cannot higher than starting range";
								next;
								break;
							}
							else
								setarray @tmp_ms_b_m_[3], .@tmp, .@tmp2;
							break;
						case 3:
							mes "["+ strnpcinfo(1) +"]";
							mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Time Limit : "+( ( @tmp_ms_b_m_[5] )?"^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000":"" );
							mes "      1 = 1 minute";
							mes "    60 = 1 hour";
							mes "1440 = 1 day";
							next;
							input @tmp_ms_b_m_[5], 0, 1440;
							break;
						case 4:
							while (1) {
								mes "["+ strnpcinfo(1) +"]";
								mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
								mes " ";
								if ( @tmp_ms_b_m_[2] == 0 )
									mes "Job Limit : ^FF0000<none>^000000";
								else {
									deletearray .@joblimit;
									for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
										if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
											set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
										}
									}
									set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
									set .@size, getarraysize(.@joblimit);
									for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
										set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
									mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
								}
								next;
								set .@menu$, ( ( @tmp_ms_b_m_[2] & pow( 2, 0 ) )?"^00CC00":"^FF0000" )+ .jobname$;
								for ( set .@i, 1; .@i < 24; set .@i,.@i +1 )
									set .@menu$, .@menu$ +":"+( ( @tmp_ms_b_m_[2] & pow( 2, .@i ) )?"^00CC00":"^FF0000" )+ .jobname$[.@i];
								set .@menu$, .@menu$ +":^000000- back";
								set .@menu, select(.@menu$) -1;
								if ( .@menu == 24 ) break;
								set @tmp_ms_b_m_[2], @tmp_ms_b_m_[2] ^ pow( 2, .@menu );
							}
							break;
						case 5:
					}
					if ( .@limitmenu == 5 ) break;
				}
				break;
			case 3:
				while (1) {
					mes "["+ strnpcinfo(1) +"]";
					mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
					mes " ";
					mes "[^009900Rewards^000000]";
					mes "Base Exp : "+( ( @tmp_ms_b_m_[7] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ):"^FF00000" ) +"^000000";
					mes "Job Exp : "+( ( @tmp_ms_b_m_[8] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ):"^FF00000" ) +"^000000";
					mes "Zeny : "+( ( @tmp_ms_b_m_[9] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ):"^FF00000" ) +"^000000 ";
					mes "Mission Points : "+( ( @tmp_ms_b_m_[10] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ):"^FF00000" ) +"^000000";
					if ( @tmp_ms_b_ia_ == 0 )
						mes "Item : ";
					set .@size, getarraysize(@tmp_ms_b_ia_);
					for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
						mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
					next;
					set .@rewardmenu, select ( "Base Exp", "Job Exp", "Zeny", "Mission Pointss", "Item Rewards", "- back" );
					switch ( .@rewardmenu ) {
						case 1:
							input @tmp_ms_b_m_[7], 0, 2000000000;
							break;
						case 2:
							input @tmp_ms_b_m_[8], 0, 2000000000;
							break;
						case 3:
							input @tmp_ms_b_m_[9], 0, 2000000000;
							break;
						case 4:
							input @tmp_ms_b_m_[10], 0, 2000000000;
							break;
						case 5:
							while (1) {
								mes "["+ strnpcinfo(1) +"]";
								mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
								mes " ";
								if ( @tmp_ms_b_ia_ == 0 )
									mes "Item :";
								set .@size, getarraysize(@tmp_ms_b_ia_);
								for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
									mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
								next;
								set .@item_reward_menu, select ( "Add an item reward", "Remove an item reward", "- back" );
								switch ( .@item_reward_menu ) {
									case 1:
										mes "["+ strnpcinfo(1) +"]";
										mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ia_ == 0 )
											mes "Item : ";
										set .@size, getarraysize(@tmp_ms_b_ia_);
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
											mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
										mes " ";
										if ( .@size == 10 ) {
											mes "Items Rewards are only allow up to 5 different kinds";
											next;
											break;
										}
										mes "Input item id";
										next;
										input .@tmp, 0, 32767;
										mes "["+ strnpcinfo(1) +"]";
										if ( getitemname(.@tmp) == "null" ) {
											mes "Invalid item id";
											next;
											break;
										}
										mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ia_ == 0 )
											mes "Item : ";
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
											mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
										mes " ";
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
											if ( .@tmp == @tmp_ms_b_ia_[.@i] ) break;
										}
										if ( .@i != .@size ) {
											mes "Item ^0000FF"+ getitemname(.@tmp) +"^000000 is repeated";
											next;
											break;
										}
										mes "Item : ^0000FF"+ getitemname(.@tmp) +"^000000";
										mes "Input the amount rewards for this item";
										next;
										input .@tmp2, 0, 30000;
										if ( .@tmp2 == 0 ) {
											mes "["+ strnpcinfo(1) +"]";
											mes "Invalid amount";
											next;
										}
										else
											setarray @tmp_ms_b_ia_[ .@size ], .@tmp, .@tmp2;
										break;
									case 2:
										mes "["+ strnpcinfo(1) +"]";
										mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ia_ == 0 ) {
											mes "There is no item rewards to remove";
											next;
											break;
										}
										set .@size, getarraysize(@tmp_ms_b_ia_);
										for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
											mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
										mes " ";
										mes "Select an item rewards to delete";
										next;
										set .@menu$, "^0000FF"+ @tmp_ms_b_ia_[1] +" "+ getitemname(@tmp_ms_b_ia_);
										for ( set .@i, 2; .@i < .@size; set .@i, .@i +2 )
											set .@menu$, .@menu$ +":"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]);
										set .@menu$, .@menu$ +"^000000:- back";
										set .@menu, select(.@menu$) -1;
										if ( .@menu == .@size /2 ) break;
										deletearray @tmp_ms_b_ia_[ .@menu *2 ], 2;
									case 3:
								}
								if ( .@item_reward_menu == 3 ) break;
							}
						case 6:
					}
					if ( .@rewardmenu == 6 ) break;
				}
				break;
			case 4:
				mes "["+ strnpcinfo(1) +"]";
				if ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) &&
					( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ ) ) {
					mes "mission ID: ^996600"+( ( getarg(0) == 0 )?$ms_b_id +1:@m_id )+"^000000";
					mes "Name : ^0000FF"+ @tmp_ms_b_m_$[0] +"^000000";
				}
				else {
					mes "Name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
					mes " ";
					mes "Some field are still Incomplete !";
					next;
					break;
				}
				mes "Description: ^0000FF"+ @tmp_ms_b_m_$[1] +"^000000";
				mes " ";
				set .@size, getarraysize(@tmp_ms_b_t_);
				for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
					mes "Require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
				set .@size, getarraysize(@tmp_ms_b_ir_);
				for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
					mes "Require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
					mes " ";
				if ( @tmp_ms_b_m_[6] || @tmp_ms_b_m_[3] || @tmp_ms_b_m_[5] || @tmp_ms_b_m_[2] ) {
					mes "[^FF0000Limitations^000000]";
					if ( @tmp_ms_b_m_[6] )
						mes "Can do : "+( ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
					if ( @tmp_ms_b_m_[3] )
						mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?"  ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
					if ( @tmp_ms_b_m_[5] )
						mes "Time Limit : ^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000";
					if ( @tmp_ms_b_m_[2] ) {
						deletearray .@joblimit;
						for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
							if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
								set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
							}
						}
						set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
						set .@size, getarraysize(.@joblimit);
						for ( set .@i, 1; .@i < .@size; set .@i, .@i +1 )
							set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
						mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
					}
					mes " ";
				}
				mes "[^009900Rewards^000000]";
				if ( @tmp_ms_b_m_[7] )
					mes "Base Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ) +"^000000";
				if ( @tmp_ms_b_m_[8] )
					mes "Job Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ) +"^000000";
				if ( @tmp_ms_b_m_[9] )
					mes "Zeny : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ) +"^000000";
				if ( @tmp_ms_b_m_[10] )
					mes "Mission Points : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ) +"^000000";
				set .@size, getarraysize(@tmp_ms_b_ia_);
				for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
					mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
				return 1;
			case 5:
				return 0;
		}
	}
	end;
OnInit:
	set .loading, 1;
	set .total_npc, .total_npc +1 ;
	if ( atoi( strnpcinfo(2) ) <= 0 || atoi( strnpcinfo(2) ) > 127 ) {
		debugmes "Mission Board: invalid npc id #"+ strnpcinfo(2);
		goto L_load_finish;
	}
	else if ( .ms_b_name$[ atoi( strnpcinfo(2) ) ] != "" ) {
		debugmes "Mission Board: duplicate npc id #"+ strnpcinfo(2);
		set .duplicate_id[ getarraysize(.duplicate_id) ], atoi( strnpcinfo(2) );
		goto L_load_finish;
	}
	set .ms_b_name$[ atoi( strnpcinfo(2) ) ], strnpcinfo(1);
	explode .@ms_b_n_$, getd("$ms_b_n_"+ strnpcinfo(2) +"$"), "#";
	set .@ex_size, getarraysize(.@ms_b_n_$);
	set .@i, 0;
	while ( .@i < .@ex_size ) {
		setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]", atoi( .@ms_b_n_$[.@i] );
		set .@i, .@i +1 ;
	}
	set .@size, getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) );
	while ( .@id < .@size ) {
		set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@id +"]");
		explode .@ms_b_m_$[2], getd("$ms_b_m_"+ .@m_id +"$[2]"), "#";
		set .@ex_size, getarraysize(.@ms_b_m_$);
		set .@i, 0;
		while ( .@i < .@ex_size ) {
			setd ".ms_b_m_"+ .@m_id +"["+ .@i +"]", atoi( .@ms_b_m_$[.@i] );
			set .@i, .@i +1 ;
		}
		explode .@ms_b_t_$, getd("$ms_b_m_"+ .@m_id +"$[3]"), "#";
		set .@ex_size, getarraysize(.@ms_b_t_$);
		set .@i, 0;
		while ( .@i < .@ex_size ) {
			setd ".ms_b_t_"+ .@m_id +"["+ .@i +"]", atoi( .@ms_b_t_$[.@i] );
			set .@i, .@i +1 ;
		}        
		copyarray getd(".ms_b_ir_"+ .@m_id), getd(".ms_b_t_"+ .@m_id +"[16]"), 10;
		copyarray getd(".ms_b_ia_"+ .@m_id), getd(".ms_b_t_"+ .@m_id +"[26]"), 10;
		deletearray getd(".ms_b_t_"+ .@m_id +"[16]"), 20;
		set .@id, .@id +1 ;
		sleep 1;
	}
L_load_finish:
	set .finish, .finish +1;
	if ( .finish == .total_npc ) {
		set .finish, 0;
		set .total_npc, 0;
		set .loading, 0;
		setarray .jobname$,    "(Super) Novice","Swordman","Mage","Archer","Acolyte","Merchant","Thief","Knight","Priest","Wizard","Blacksmith","Hunter","Assassin","Crusader","Monk","Sage","Rogue","Alchemist","Bard/Dancer","Taekwon","Star Gladiator","Soul Linker","Gunslinger","Ninja";
	}
	end;
}

-	script	mission	-1,{
OnWhisperGlobal:
	if ( getvariableofnpc( .loading, "ms_b_") == 1 ) {
		dispbottom "Mission Board: Loading Mission Data ......";
		end;
	}
	if ( @ms_b_loading == 1 ) {
		dispbottom "Mission Board: Loading Player Data ......";
		end;
	}
	for ( set .@i, 1; .@i <= 4; set .@i, .@i +1 ) {
		if ( getd("@ms_b_m_"+ .@i) ) {
			if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") == "" ) {
				dispbottom "Mission Board: Your Mission#"+ .@i +" has deleted because it is no longer available";
				deletearray getd("@ms_b_m_"+ .@i);
				setd "ms_b_m_"+ .@i +"$", "";
				deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
			}
			else if ( getd("@ms_b_m_"+ .@i +"[1]") && getd("@ms_b_m_"+ .@i +"[1]") <= gettimetick(2) ) {
				dispbottom "Mission #1: "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") +" has Time Up";
				deletearray getd("@ms_b_m_"+ .@i);
				setd "ms_b_m_"+ .@i +"$", "";
				deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
			}
		}
	}
	dispbottom "[Mission Progress]";
	if ( @ms_b_m_1 == 0 && @ms_b_m_2 == 0 && @ms_b_m_3 == 0 && @ms_b_m_4 == 0 ) {
		dispbottom "You haven't accepted any mission(s) yet!";
		end;
	}
	for ( set .@j, 1; .@j <= 4; set .@j, .@j +1 ) {
		if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
			dispbottom "-----------------------";
			dispbottom "Mission #"+ .@j +":  "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]");
			if ( getvariableofnpc( getd(".ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"[5]"), "ms_b_" ) ) {
				set .@left, getd("@ms_b_m_"+ .@j +"[1]") - gettimetick(2);
				set .@hour, .@left / 3600;
				set .@min, .@left % 3600 / 60;
				set .@sec, .@left % 60;
				dispbottom "Time Left:  "+( ( .@hour )?.@hour +" hour ":"" )+( ( .@hour || .@min )?.@min +" min ":"" )+ .@sec +" sec";
			}
			if ( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ) {
	
				set .@size, getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) );
				for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
					dispbottom "Monsters killed: "+ getmonsterinfo( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) , 0) +" ["+( ( getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") > getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) )?getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ):getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") ) +"/"+ getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) +"]";
			}
			if ( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ) {
				set .@size, getarraysize( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) );
				for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 )
					dispbottom "Items Collected: "+ getitemname( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) +" ["+ countitem( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) +"/"+ getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) +"]";
			}
		}
	}
	dispbottom "   -----------------------";
	end;
OnNPCKillEvent:
	set .@killedrid, killedrid;
	if ( getvariableofnpc( .loading, "ms_b_") == 1 ) end;
	if ( getcharid(1) == 0 ) {
		if ( @ms_b_loading == 1 ) end;
		for ( set .@j, 1; .@j <= 4; set .@j, .@j +1 ) {
			if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
				if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
					dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted because it is no longer available";
					deletearray getd("@ms_b_m_"+ .@j);
					setd "ms_b_m_"+ .@j +"$", "";
					deltimer "ms_b_::OnQuest"+ .@j +"TimeUp";
				}
				else {
					set .@size, getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) );
					for ( set .@i, 0; .@i < .@size; set .@i, .@i +2 ) {
						if ( .@killedrid == getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) && getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") < getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+( .@i +1 )+"]"), "ms_b_" ) ) {
							setd "@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]", getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +1;
							dispbottom "Mission #"+ .@j +". You have killed "+ getmonsterinfo( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ), 0 ) +" ["+ getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +"/"+ getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+( .@i +1 )+"]"), "ms_b_" ) +"]";
							setd "ms_b_m_"+ .@j +"$", getd("@ms_b_m_"+ .@j +"[0]") +"#"+( ( getd("@ms_b_m_"+ .@j +"[1]") )?getd("@ms_b_m_"+ .@j +"[1]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[2]") )?getd("@ms_b_m_"+ .@j +"[2]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[3]") )?getd("@ms_b_m_"+ .@j +"[3]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[4]") )?getd("@ms_b_m_"+ .@j +"[4]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[5]") )?getd("@ms_b_m_"+ .@j +"[5]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[6]") )?getd("@ms_b_m_"+ .@j +"[6]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[7]") )?getd("@ms_b_m_"+ .@j +"[7]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[8]") )?getd("@ms_b_m_"+ .@j +"[8]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[9]") )?getd("@ms_b_m_"+ .@j +"[9]"):"" );
						}
					}
				}
			}
		}
		end;
	}
	getmapxy .@map1$, .@x1, .@y1, 0;
	getpartymember getcharid(1), 1;
	getpartymember getcharid(1), 2;
	set .@k, 0;
	while ( .@k < $@partymembercount ) {
		if ( isloggedin( $@partymemberaid[.@k], $@partymembercid[.@k] ) ) {
			attachrid $@partymemberaid[.@k];
			getmapxy .@map2$, .@x2, .@y2, 0;
			if ( @ms_b_loading == 0 && .@map1$ == .@map2$ && distance(.@x1,.@y1,.@x2,.@y2) <= 30 && Hp ) {
				set .@j, 1;
				while ( .@j <= 4 ) {
					if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
						if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
							dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted because it is no longer available";
							deletearray getd("@ms_b_m_"+ .@j);
							setd "ms_b_m_"+ .@j +"$", "";
							deltimer "ms_b_::OnQuest"+ .@j +"TimeUp";
						}
						else {
							set .@i, 0;
							set .@size, getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) );
							while ( .@i < .@size ) {
								if ( .@killedrid == getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) && getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") < getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+( .@i +1 )+"]"), "ms_b_" ) ) {
									setd "@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]", getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +1;
									dispbottom "Mission #"+ .@j +". You have killed "+ getmonsterinfo( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ), 0 ) +" ["+ getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +"/"+ getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+( .@i +1 )+"]"), "ms_b_" ) +"]";
									setd "ms_b_m_"+ .@j +"$", getd("@ms_b_m_"+ .@j +"[0]") +"#"+( ( getd("@ms_b_m_"+ .@j +"[1]") )?getd("@ms_b_m_"+ .@j +"[1]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[2]") )?getd("@ms_b_m_"+ .@j +"[2]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[3]") )?getd("@ms_b_m_"+ .@j +"[3]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[4]") )?getd("@ms_b_m_"+ .@j +"[4]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[5]") )?getd("@ms_b_m_"+ .@j +"[5]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[6]") )?getd("@ms_b_m_"+ .@j +"[6]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[7]") )?getd("@ms_b_m_"+ .@j +"[7]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[8]") )?getd("@ms_b_m_"+ .@j +"[8]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[9]") )?getd("@ms_b_m_"+ .@j +"[9]"):"" );
								}
								set .@i, .@i +2 ;
							}
						}
					}
					set .@j, .@j +1 ;
				}
			}
		}
		set .@k, .@k +1 ;
	}
	end;
OnPCLoginEvent:
	set @ms_b_loading, 1;
	set .@j, 1;
	while ( .@j <= 4 ) {
		if ( getd("ms_b_m_"+ .@j +"$") != "" ) {
			explode getd(".@ms_b_m_"+ .@j +"$"), getd("ms_b_m_"+ .@j +"$"), "#";
			set .@ex_size, getarraysize( getd(".@ms_b_m_"+ .@j +"$") );
			set .@i, 0;
			while ( .@i < .@ex_size ) {
				setd "@ms_b_m_"+ .@j +"["+ .@i +"]", atoi( getd(".@ms_b_m_"+ .@j +"$["+ .@i +"]") );
				set .@i, .@i +1 ;
			}
		}
		set .@j, .@j +1 ;
	}
	sleep2 1;
	set .@l, 0;
	while ( .@npc_id < 128 ) {
		if ( getvariableofnpc( .ms_b_name$[.@npc_id], "ms_b_" ) != "" ) {
			explode getd(".@ms_b_n_"+ .@npc_id +"$"), getd("ms_b_n_"+ .@npc_id +"$"), "#";
			set .@ex_size, getarraysize( getd(".@ms_b_n_"+ .@npc_id +"$") );
			set .@i, 0;
			while ( .@i < .@ex_size ) {
				setd "@ms_b_n_"+ .@npc_id +"["+ .@i +"]", atoi( getd(".@ms_b_n_"+ .@npc_id +"$["+ .@i +"]") );
				set .@i, .@i +1 ;
			}
			sleep2 1;
		}
		set .@npc_id, .@npc_id +1 ;
	}
	sleep2 1;
	set @ms_b_loading, 0;
	if ( getvariableofnpc( .loading, "ms_b_" ) == 0 ) {
		set .@j, 1;
		while ( .@j <= 4 ) {
			if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
				if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
					dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted because it is no longer available";
					deletearray getd("@ms_b_m_"+ .@j);
					setd "ms_b_m_"+ .@j +"$", "";
				}
				else if ( getd("@ms_b_m_"+ .@j +"[1]") ) {
					if ( getd("@ms_b_m_"+ .@j +"[1]") > gettimetick(2) )
						addtimer ( getd("@ms_b_m_"+ .@j +"[1]") - gettimetick(2) ) *1000, "ms_b_::OnQuest"+ .@j +"TimeUp";
					else
						doevent "ms_b_::OnQuest"+ .@j +"TimeUp";
				}
			}
			set .@j, .@j +1 ;
		}
	}
	end;
}

//    create more missions by using npc duplicates
//    display name can be anything, but the hidden name #1 #2 #35 must be a number within 1 ~ 126
//    Note: npc display name plus the hidden name must not more than 23 characters
tyria,197,190,5	duplicate(ms_b_)	Mission Board#3	857

 

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

@Radian

2.4b http://upaste.me/0c8149627b3ddc0c6

- fix a typo in mission limitation can do daily or only once, actually allows to do twice instead of once

- fix a typo in mission time limit, if your mission no.2/3/4 has expired, the script always says slot no.1

  • Upvote 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  54
  • Topics Per Day:  0.01
  • Content Count:  1167
  • Reputation:   159
  • Joined:  06/12/12
  • Last Seen:  

6 hours ago, AnnieRuru said:

@Radian

2.4b http://upaste.me/0c8149627b3ddc0c6

- fix a typo in mission limitation can do daily or only once, actually allows to do twice instead of once

- fix a typo in mission time limit, if your mission no.2/3/4 has expired, the script always says slot no.1

Using new version if set limitation everyday  and time limit 24 hour still could take the quest even character already complete the quest.

Not like version 2.0 if character already complete the quest, he must wait for another day to take the quest

 

here your 2.0 script

Spoiler

//	....... if your server has { Overwriting user function [int__] } don't blame me ..........
function	script	int__	{
	set .@num, atoi(getarg(0));
	if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0);
	set .@l, getstrlen(.@num);
	set .@i, 0;
	while ( .@i < .@l ) {
		set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;
		if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$;
		set .@i, .@i +1 ;
	}
	return .@num$;
}

//===== eAthena Script ============================================
//= Mission Board
//===== By: =======================================================
//= ~AnnieRuru~
//===== Current Version: ==========================================
//= 2.0
//===== Compatible With: ==========================================
//= eAthena 14214 Trunk
//===== Description: ==============================================
//= allow admin to setup their own quests dynamically
//===== Topic =====================================================
//= http://www.eathena.ws/board/index.php?showtopic=242306
//===== Additional Comments: ======================================
//= tired ....
//=================================================================

-	script	mission board#127::ms_b_	-1,{
	mes "["+ strnpcinfo(1) +"]";
	if ( atoi( strnpcinfo(2) ) <= 0 || atoi( strnpcinfo(2) ) > 127 ) {
		mes " ";
		mes "this npc has error";
		mes "please report to GM";
		mes "Reason: invalid npc id";
		close;
	}
	if ( .duplicate_id ) {
		for ( set .@i, 0; .@i < getarraysize(.duplicate_id); set .@i, .@i +1 ) {
			if ( .duplicate_id[.@i] == atoi( strnpcinfo(2) ) ) {
				mes " ";
				mes "this npc has error";
				mes "please report to GM";
				mes "Reason: duplicate npc id#"+ strnpcinfo(2);
				close;
			}
		}
	}
	if ( .loading == 1 ) {
		mes " ";
		mes "Loading mission data...";
		mes " ";
		mes "Please wait";
		close;
	}
	if ( @ms_b_loading == 1 ) {
		mes " ";
		mes "Loading player data...";
		mes " ";
		mes "Please wait";
		close;
	}
	mes "please select an option";
	set @slot, 0;
	next;
	for ( set .@i, 1; .@i <= 4; set .@i, .@i +1 ) {
		if ( getd("@ms_b_m_"+ .@i) ) {
			if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") == "" ) {
				dispbottom "Mission Board: Your Mission#"+ .@i +" has deleted";
				deletearray getd("@ms_b_m_"+ .@i);
				setd "ms_b_m_"+ .@i +"$", "";
				deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
			}
			else if ( getd("@ms_b_m_"+ .@i +"[1]") && getd("@ms_b_m_"+ .@i +"[1]") <= gettimetick(2) ) {
				dispbottom "Mission #1: "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") +" has Time Up";
				deletearray getd("@ms_b_m_"+ .@i);
				setd "ms_b_m_"+ .@i +"$", "";
				deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
			}
		}
	}
	for ( set .@i, 1; .@i < getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 ) {
		if ( getd("@ms_b_n_"+ strnpcinfo(2) +"[0]") != atoi( gettimestr("%Y%m%d", 9) ) && getd(".ms_b_m_"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 1 ||
			getd(".ms_b_m_"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 0 ) {
				deletearray getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]"), 1;
				set .@i, .@i -1 ;
		}
	}
	if ( getd("@ms_b_n_"+ strnpcinfo(2) +"[1]") ) {
		setd "ms_b_n_"+ strnpcinfo(2) +"$",	gettimestr("%Y%m%d", 9);
		for ( set .@i, 1; .@i < getarraysize( getd("@ms_b_n_"+ strnpcinfo(2) ) ); set .@i, .@i +1 )
			setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
	}
	else
		setd "ms_b_n_"+ strnpcinfo(2) +"$", "";
	switch ( select ( "submit mission", "give up a mission", "take a mission", ( getgmlevel() < 99 )?"":"^FF0000gm setting^000000" ) ) {
		case 1:
			mes "["+ strnpcinfo(1) +"]";
			set @slot, select(
				"#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
			if ( getd("@ms_b_m_"+ @slot +"[0]") == 0 ) {
				mes "don't have any mission on that slot";
				close;
			}
			callsub L_showprogress;
			mes "submit this mission ?";
			next;
			if ( select ( "Yes", "No" ) == 2 ) close;
			mes "["+ strnpcinfo(1) +"]";
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[11]") != atoi( strnpcinfo(2) ) ) {
				mes "you should submit this mission to";
				mes "^0000FF"+ .ms_b_name$[ getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[11]") ] +"^000000";
				close;
			}
			for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 ) {
				if ( getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") < getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]") ) {
					mes "you must kill all the monsters on the list";
					close;
				}
			}
			for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 ) {
				if ( countitem( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") )  < getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]") ) {
					mes "you must collect all the items on the list";
					close;
				}
			}
			if ( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ) {
				getinventorylist;
				deletearray @inventorylist_id, @inventorylist_count;
				deletearray @inventorylist_amount, @inventorylist_count;
				deletearray @inventorylist_equip, @inventorylist_count;
				deletearray @inventorylist_refine, @inventorylist_count;
				deletearray @inventorylist_identify, @inventorylist_count;
				deletearray @inventorylist_attribute, @inventorylist_count;
				deletearray @inventorylist_card1, @inventorylist_count;
				deletearray @inventorylist_card2, @inventorylist_count;
				deletearray @inventorylist_card3, @inventorylist_count;
				deletearray @inventorylist_card4, @inventorylist_count;
				for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 ) {
					set .@itemweight, .@itemweight + getiteminfo( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), 6 ) * getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]");
				}
				if ( @inventorylist_count > 95 || weight + .@itemweight > maxweight ) {
					mes "you can't submit this mission because you have to clear up some inventory space first";
					set @inventorylist_count, 0;
					close;
				}
				set @inventorylist_count, 0;
			}
			mes "mission complete";
			mes " ";
			for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 )
				delitem getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]");
			mes "[Rewards]";
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) {
				mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) +"^000000";
				dispbottom "Mission Reward > Base Exp : "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") );
				set baseexp, baseexp + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]");
			}
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) {
				mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) +"^000000";
				dispbottom "Mission Reward > Job Exp : "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") );
				set jobexp, jobexp + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]");
			}
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) {
				mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +"^000000";
				dispbottom "Mission Reward > "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +" Zeny";
				set zeny, zeny + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]");
			}
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) {
				mes "Cash Point : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +"^000000";
				dispbottom "Mission Reward > "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +" Cash Points";
				set #CASHPOINTS, #CASHPOINTS + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]");
			}
			for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 ) {
				mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000";
				getitem getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]");
			}
			if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[6]") ) {
				setd "@ms_b_n_"+ strnpcinfo(2) +"[0]", gettimestr("%Y%m%d", 9);
				setd "@ms_b_n_"+ strnpcinfo(2) +"["+ getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) ) +"]", getd("@ms_b_m_"+ @slot +"[0]");
				setd "ms_b_n_"+ strnpcinfo(2) +"$",	gettimestr("%Y%m%d", 9);
				for ( set .@i, 1; .@i < getarraysize( getd("@ms_b_n_"+ strnpcinfo(2) ) ); set .@i, .@i +1 )
					setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
			}
			deletearray getd("@ms_b_m_"+ @slot);
			setd "ms_b_m_"+ @slot +"$", "";
			deltimer "ms_b_::OnQuest"+ @slot +"TimeUp";
			set @slot, 0;
			close;
		case 2:
			mes "["+ strnpcinfo(1) +"]";
			set @slot, select(
				"#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
			if ( getd("@ms_b_m_"+ @slot +"[0]") == 0 ) {
				mes "don't have any mission on that slot";
				close;
			}
			callsub L_showprogress;
			mes "give up this mission ?";
			next;
			if ( select ( "Yes", "No" ) == 2 ) close;
			mes "["+ strnpcinfo(1) +"]";
			mes "^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[0]") +"^000000";
			mes " ";
			mes "you have give up this mission";
			deletearray getd("@ms_b_m_"+ @slot);
			setd "ms_b_m_"+ @slot +"$", "";
			deltimer "ms_b_::OnQuest"+ @slot +"TimeUp";
			set @slot, 0;
			close;
		case 3:
			mes "["+ strnpcinfo(1) +"]";
			if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
				mes "Currently unavailable";
				close;
			}
			set .@slot, select(
				"#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
				"#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
			if ( getd("@ms_b_m_"+ .@slot +"[0]") ) {
				mes "this slot already has a mission";
				close;
			}
			mes "choose a mission";
			next;
			while (1) {
				set .@menu$, "^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
				for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 )
					set .@menu$, .@menu$ +":"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
				set .@menu$, .@menu$ +"^000000";
				set .@menu, select(.@menu$) -1;
				set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
				mes "["+ strnpcinfo(1) +"]";
				mes "^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[0]") +"^000000";
				mes "Description: ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[1]") +"^000000";
				if ( getd(".ms_b_m_"+ .@m_id +"[6]") ) {
					for ( set .@i, 1; .@i < getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 ) {
						if ( getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") == .@m_id ) break;
					}
					mes "Status : "+( ( .@i == getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) ) || getd("@ms_b_n_"+ strnpcinfo(2)) == 0 )?"^FF0000Incomplete":"^00CC00Completed" )+"^000000";
				}
				mes " ";
				for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_t_"+ .@m_id) ); set .@i, .@i +2 )
					mes "require mobs : ^0000FF"+ getd(".ms_b_t_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getmonsterinfo( getd(".ms_b_t_"+ .@m_id +"["+ .@i +"]") , 0) +"^000000";
				for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ir_"+ .@m_id) ); set .@i, .@i +2 )
					mes "require items : ^0000FF"+ getd(".ms_b_ir_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ir_"+ .@m_id +"["+ .@i +"]") ) +"^000000";
				mes " ";
				if ( getd(".ms_b_m_"+ .@m_id +"[6]") || getd(".ms_b_m_"+ .@m_id +"[3]") || getd(".ms_b_m_"+ .@m_id +"[2]") ) {
					mes "[Limitations]";
					if ( getd(".ms_b_m_"+ .@m_id +"[6]") )
						mes "Can do : "+( ( getd(".ms_b_m_"+ .@m_id +"[6]") == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
					if ( getd(".ms_b_m_"+ .@m_id +"[3]") )
						mes "Base Level :"+( ( getd(".ms_b_m_"+ .@m_id +"[3]") )?"  ^0000FF"+ getd(".ms_b_m_"+ .@m_id +"[3]") +( ( getd(".ms_b_m_"+ .@m_id +"[3]") != getd(".ms_b_m_"+ .@m_id +"[4]") )?"~"+ getd(".ms_b_m_"+ .@m_id +"[4]"):"" )+"^000000":"" );
					if ( getd(".ms_b_m_"+ .@m_id +"[5]") )
						mes "Time Limit : ^FF0000"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") /60 )?getd(".ms_b_m_"+ .@m_id +"[5]") /60 +" hour"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?" ":"" ):"" )+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?getd(".ms_b_m_"+ .@m_id +"[5]") %60 +" min":"" )+"^000000";
					if ( getd(".ms_b_m_"+ .@m_id +"[2]") ) {
						deletearray .@joblimit;
						for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
							if ( getd(".ms_b_m_"+ .@m_id +"[2]") & pow( 2, .@i ) ) {
								set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
							}
						}
						set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
						for ( set .@i, 1; .@i < getarraysize(.@joblimit); set .@i, .@i +1 )
							set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
						mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
					}
					mes " ";
				}
				mes "[Rewards]";
				if ( getd(".ms_b_m_"+ .@m_id +"[7]") )
					mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[7]") ) +"^000000";
				if ( getd(".ms_b_m_"+ .@m_id +"[8]") )
					mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[8]") ) +"^000000";
				if ( getd(".ms_b_m_"+ .@m_id +"[9]") )
					mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[9]") ) +"^000000";
				if ( getd(".ms_b_m_"+ .@m_id +"[10]") )
					mes "Cash Point : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[10]") ) +"^000000";
				for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ia_"+ .@m_id ) ); set .@i, .@i +2 )
					mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ .@m_id +"["+ .@i +"]") ) +"^000000";
				next;
				if ( select ( "take mission", "pick another" ) == 1 ) {
					for ( set .@i, 1; .@i < getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 ) {
						if ( getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") == .@m_id ) {
							mes "["+ strnpcinfo(1) +"]";
							mes "You have completed this mission";
							set .@break, 1;
							next;
							break;
						}
					}
					if ( .@break == 0 && ( @ms_b_m_1[0] == .@m_id || @ms_b_m_2[0] == .@m_id || @ms_b_m_3[0] == .@m_id || @ms_b_m_4[0] == .@m_id ) ) {
						mes "["+ strnpcinfo(1) +"]";
						mes "You already taken this mission";
						set .@break, 1;
						next;
					}
					if ( .@break == 0 && getd(".ms_b_m_"+ .@m_id +"[3]") && ( baselevel < getd(".ms_b_m_"+ .@m_id +"[3]") || baselevel > getd(".ms_b_m_"+ .@m_id +"[4]") ) ) {
						mes "["+ strnpcinfo(1) +"]";
						mes "Your current level is not allow to take this mission";
						set .@break, 1;
						next;
					}
					if ( .@break == 0 && getd(".ms_b_m_"+ .@m_id +"[2]") ) {
						if ( basejob == Job_Novice || basejob == Job_SuperNovice ) set .@basejob, pow(2,0);
						else if ( basejob == Job_Swordman ) set .@basejob, pow(2,1);
						else if ( basejob == Job_Mage ) set .@basejob, pow(2,2);
						else if ( basejob == Job_Archer ) set .@basejob, pow(2,3);
						else if ( basejob == Job_Acolyte ) set .@basejob, pow(2,4);
						else if ( basejob == Job_Merchant ) set .@basejob, pow(2,5);
						else if ( basejob == Job_Thief ) set .@basejob, pow(2,6);
						else if ( basejob == Job_Knight ) set .@basejob, pow(2,7);
						else if ( basejob == Job_Priest ) set .@basejob, pow(2,8);
						else if ( basejob == Job_Wizard ) set .@basejob, pow(2,9);
						else if ( basejob == Job_Blacksmith ) set .@basejob, pow(2,10);
						else if ( basejob == Job_Hunter ) set .@basejob, pow(2,11);
						else if ( basejob == Job_Assassin ) set .@basejob, pow(2,12);
						else if ( basejob == Job_Crusader ) set .@basejob, pow(2,13);
						else if ( basejob == Job_Monk ) set .@basejob, pow(2,14);
						else if ( basejob == Job_Sage ) set .@basejob, pow(2,15);
						else if ( basejob == Job_Rogue ) set .@basejob, pow(2,16);
						else if ( basejob == Job_Alchemist ) set .@basejob, pow(2,17);
						else if ( basejob == Job_Bard || basejob == Job_Dancer ) set .@basejob, pow(2,18);
						else if ( basejob == Job_Taekwon ) set .@basejob, pow(2,19);
						else if ( basejob == Job_Star_Gladiator ) set .@basejob, pow(2,20);
						else if ( basejob == Job_Soul_Linker ) set .@basejob, pow(2,21);
						else if ( basejob == Job_Gunslinger ) set .@basejob, pow(2,22);
						else if ( basejob == Job_Ninja ) set .@basejob, pow(2,23);
						else dispbottom "error, pls report to GM with screenshots";
						if ( getd(".ms_b_m_"+ .@m_id +"[2]") & .@basejob ) ;
						else {
							mes "["+ strnpcinfo(1) +"]";
							mes "Your can't take this mission because of job limitations";
							set .@break, 1;
							next;
						}
					}
					if ( .@break == 0 ) break;
				}
				set .@break, 0;
			}
			mes "["+ strnpcinfo(1) +"]";
			mes "You taken a mission :";
			mes "^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[0]") +"^000000";
			if ( getd(".ms_b_m_"+ .@m_id +"[5]") ) {
				mes "Time Left : ^FF0000"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") /60 )?getd(".ms_b_m_"+ .@m_id +"[5]") /60 +" hour"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?" ":"" ):"" )+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?getd(".ms_b_m_"+ .@m_id +"[5]") %60 +" min":"" )+"^000000";
				addtimer getd(".ms_b_m_"+ .@m_id +"[5]") * 60 * 1000, "ms_b_::OnQuest"+ .@slot +"TimeUp";
				setd "@ms_b_m_"+ .@slot +"[1]", gettimetick(2) + getd(".ms_b_m_"+ .@m_id +"[5]") * 60;
			}
			setd "@ms_b_m_"+ .@slot +"[0]", .@m_id;
			setd "ms_b_m_"+ .@slot +"$", getd("@ms_b_m_"+ .@slot +"[0]") +"#"+ getd("@ms_b_m_"+ .@slot +"[1]");
			close;
		case 4:
			if ( getgmlevel() < 99 ) end;
			while (1) {
				mes "["+ strnpcinfo(1) +"]";
				mes "select an option";
				next;
				switch ( select ( "setup a mission", "edit a mission", "remove a mission", "swap mission order" ) ) {
					case 1:
						if ( getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ) == 40 ) {
							mes "["+ strnpcinfo(1) +"]";
							mes "only allow to setup 40 missions per npc";
							next;
							break;
						}
						deletearray @tmp_ms_b_m_$;
						deletearray @tmp_ms_b_m_;
						deletearray @tmp_ms_b_t_;
						deletearray @tmp_ms_b_ir_;
						deletearray @tmp_ms_b_ia_;
						if ( callsub( L_setupmission, 0 ) == 0 ) {
							deletearray @tmp_ms_b_m_$;
							deletearray @tmp_ms_b_m_;
							deletearray @tmp_ms_b_t_;
							deletearray @tmp_ms_b_ir_;
							deletearray @tmp_ms_b_ia_;
							break;
						}
						set $ms_b_id, $ms_b_id +1 ;
						setd ".ms_b_n_"+ strnpcinfo(2) +"["+ getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ) +"]", $ms_b_id;
						setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd(".ms_b_n_"+ strnpcinfo(2) +"[0]");
						for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ); set .@i, .@i +1 )
							setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
						set @tmp_ms_b_m_[11], strnpcinfo(2);
						copyarray getd(".ms_b_m_"+ $ms_b_id +"$"), @tmp_ms_b_m_$, 128;
						copyarray getd(".ms_b_m_"+ $ms_b_id), @tmp_ms_b_m_, 128;
						copyarray getd(".ms_b_t_"+ $ms_b_id ), @tmp_ms_b_t_, 128;
						copyarray getd(".ms_b_ir_"+ $ms_b_id ), @tmp_ms_b_ir_, 128;
						copyarray getd(".ms_b_ia_"+ $ms_b_id ), @tmp_ms_b_ia_, 128;
						setarray getd("$ms_b_m_"+ $ms_b_id +"$"),
							@tmp_ms_b_m_$[0],
							@tmp_ms_b_m_$[1],
							( ( @tmp_ms_b_m_[2] )?@tmp_ms_b_m_[2]:"" )+"#"+( ( @tmp_ms_b_m_[3] )?@tmp_ms_b_m_[3]:"" )+"#"+( ( @tmp_ms_b_m_[4] )?@tmp_ms_b_m_[4]:"" )+"#"+( ( @tmp_ms_b_m_[5] )?@tmp_ms_b_m_[5]:"" )+"#"+( ( @tmp_ms_b_m_[6] )?@tmp_ms_b_m_[6]:"" )+"#"+( ( @tmp_ms_b_m_[7] )?@tmp_ms_b_m_[7]:"" )+"#"+( ( @tmp_ms_b_m_[8] )?@tmp_ms_b_m_[8]:"" )+"#"+( ( @tmp_ms_b_m_[9] )?@tmp_ms_b_m_[9]:"" )+"#"+( ( @tmp_ms_b_m_[10] )?@tmp_ms_b_m_[10]:"" )+"#"+( ( @tmp_ms_b_m_[11] )?@tmp_ms_b_m_[11]:"" )+"#"+( ( @tmp_ms_b_m_[12] )?@tmp_ms_b_m_[12]:"" )+"#"+( ( @tmp_ms_b_m_[13] )?@tmp_ms_b_m_[13]:"" ),
							( ( @tmp_ms_b_t_[0] )?@tmp_ms_b_t_[0]:"" )+"#"+( ( @tmp_ms_b_t_[1] )?@tmp_ms_b_t_[1]:"" )+"#"+( ( @tmp_ms_b_t_[2] )?@tmp_ms_b_t_[2]:"" )+"#"+( ( @tmp_ms_b_t_[3] )?@tmp_ms_b_t_[3]:"" )+"#"+( ( @tmp_ms_b_t_[4] )?@tmp_ms_b_t_[4]:"" )+"#"+( ( @tmp_ms_b_t_[5] )?@tmp_ms_b_t_[5]:"" )+"#"+( ( @tmp_ms_b_t_[6] )?@tmp_ms_b_t_[6]:"" )+"#"+( ( @tmp_ms_b_t_[7] )?@tmp_ms_b_t_[7]:"" )+"#"+( ( @tmp_ms_b_t_[8] )?@tmp_ms_b_t_[8]:"" )+"#"+( ( @tmp_ms_b_t_[9] )?@tmp_ms_b_t_[9]:"" )+"#"+( ( @tmp_ms_b_t_[10] )?@tmp_ms_b_t_[10]:"" )+"#"+( ( @tmp_ms_b_t_[11] )?@tmp_ms_b_t_[11]:"" )+"#"+( ( @tmp_ms_b_t_[12] )?@tmp_ms_b_t_[12]:"" )+"#"+( ( @tmp_ms_b_t_[13] )?@tmp_ms_b_t_[13]:"" )+"#"+( ( @tmp_ms_b_t_[14] )?@tmp_ms_b_t_[14]:"" )+"#"+( ( @tmp_ms_b_t_[15] )?@tmp_ms_b_t_[15]:"" )+"#"+( ( @tmp_ms_b_ir_[0] )?@tmp_ms_b_ir_[0]:"" )+"#"+( ( @tmp_ms_b_ir_[1] )?@tmp_ms_b_ir_[1]:"" )+"#"+( ( @tmp_ms_b_ir_[2] )?@tmp_ms_b_ir_[2]:"" )+"#"+( ( @tmp_ms_b_ir_[3] )?@tmp_ms_b_ir_[3]:"" )+"#"+( ( @tmp_ms_b_ir_[4] )?@tmp_ms_b_ir_[4]:"" )+"#"+( ( @tmp_ms_b_ir_[5] )?@tmp_ms_b_ir_[5]:"" )+"#"+( ( @tmp_ms_b_ir_[6] )?@tmp_ms_b_ir_[6]:"" )+"#"+( ( @tmp_ms_b_ir_[7] )?@tmp_ms_b_ir_[7]:"" )+"#"+( ( @tmp_ms_b_ir_[8] )?@tmp_ms_b_ir_[8]:"" )+"#"+( ( @tmp_ms_b_ir_[9] )?@tmp_ms_b_ir_[9]:"" )+"#"+( ( @tmp_ms_b_ia_[0] )?@tmp_ms_b_ia_[0]:"" )+"#"+( ( @tmp_ms_b_ia_[1] )?@tmp_ms_b_ia_[1]:"" )+"#"+( ( @tmp_ms_b_ia_[2] )?@tmp_ms_b_ia_[2]:"" )+"#"+( ( @tmp_ms_b_ia_[3] )?@tmp_ms_b_ia_[3]:"" )+"#"+( ( @tmp_ms_b_ia_[4] )?@tmp_ms_b_ia_[4]:"" )+"#"+( ( @tmp_ms_b_ia_[5] )?@tmp_ms_b_ia_[5]:"" )+"#"+( ( @tmp_ms_b_ia_[6] )?@tmp_ms_b_ia_[6]:"" )+"#"+( ( @tmp_ms_b_ia_[7] )?@tmp_ms_b_ia_[7]:"" )+"#"+( ( @tmp_ms_b_ia_[8] )?@tmp_ms_b_ia_[8]:"" )+"#"+( ( @tmp_ms_b_ia_[9] )?@tmp_ms_b_ia_[9]:"" );
						deletearray @tmp_ms_b_m_$;
						deletearray @tmp_ms_b_m_;
						deletearray @tmp_ms_b_t_;
						deletearray @tmp_ms_b_ir_;
						deletearray @tmp_ms_b_ia_;
						mes " ";
						mes "mission setup completed";
						next;
						break;
					case 2:
						mes "["+ strnpcinfo(1) +"]";
						if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
							mes "You must setup a mission first";
							next;
							break;
						}
						mes "pick a mission to edit";
						next;
						set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
						for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 )
							set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
						set .@menu$, .@menu$ +":^000000 - back";
						set .@menu, select(.@menu$) -1;
						if ( .@menu == getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ) ) break;
						set @m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
						deletearray @tmp_ms_b_m_$;
						deletearray @tmp_ms_b_m_;
						deletearray @tmp_ms_b_t_;
						deletearray @tmp_ms_b_ir_;
						deletearray @tmp_ms_b_ia_;
						copyarray @tmp_ms_b_m_$, getd("$ms_b_m_"+ @m_id +"$"), 128;
						copyarray @tmp_ms_b_m_, getd(".ms_b_m_"+ @m_id ), 128;
						copyarray @tmp_ms_b_t_, getd(".ms_b_t_"+ @m_id ), 128;
						copyarray @tmp_ms_b_ir_, getd(".ms_b_ir_"+ @m_id ), 128;
						copyarray @tmp_ms_b_ia_, getd(".ms_b_ia_"+ @m_id ), 128;
						if ( callsub( L_setupmission, 1 ) == 0 ) {
							deletearray @tmp_ms_b_m_$;
							deletearray @tmp_ms_b_m_;
							deletearray @tmp_ms_b_t_;
							deletearray @tmp_ms_b_ir_;
							deletearray @tmp_ms_b_ia_;
							set @m_id, 0;
							break;
						}
						copyarray getd(".ms_b_m_"+ @m_id +"$"), @tmp_ms_b_m_$, 128;
						copyarray getd(".ms_b_m_"+ @m_id), @tmp_ms_b_m_, 128;
						copyarray getd(".ms_b_t_"+ @m_id ), @tmp_ms_b_t_, 128;
						copyarray getd(".ms_b_ir_"+ @m_id ), @tmp_ms_b_ir_, 128;
						copyarray getd(".ms_b_ia_"+ @m_id ), @tmp_ms_b_ia_, 128;
						setarray getd("$ms_b_m_"+ @m_id +"$"),
							@tmp_ms_b_m_$[0],
							@tmp_ms_b_m_$[1],
							( ( @tmp_ms_b_m_[2] )?@tmp_ms_b_m_[2]:"" )+"#"+( ( @tmp_ms_b_m_[3] )?@tmp_ms_b_m_[3]:"" )+"#"+( ( @tmp_ms_b_m_[4] )?@tmp_ms_b_m_[4]:"" )+"#"+( ( @tmp_ms_b_m_[5] )?@tmp_ms_b_m_[5]:"" )+"#"+( ( @tmp_ms_b_m_[6] )?@tmp_ms_b_m_[6]:"" )+"#"+( ( @tmp_ms_b_m_[7] )?@tmp_ms_b_m_[7]:"" )+"#"+( ( @tmp_ms_b_m_[8] )?@tmp_ms_b_m_[8]:"" )+"#"+( ( @tmp_ms_b_m_[9] )?@tmp_ms_b_m_[9]:"" )+"#"+( ( @tmp_ms_b_m_[10] )?@tmp_ms_b_m_[10]:"" )+"#"+( ( @tmp_ms_b_m_[11] )?@tmp_ms_b_m_[11]:"" )+"#"+( ( @tmp_ms_b_m_[12] )?@tmp_ms_b_m_[12]:"" )+"#"+( ( @tmp_ms_b_m_[13] )?@tmp_ms_b_m_[13]:"" ),
							( ( @tmp_ms_b_t_[0] )?@tmp_ms_b_t_[0]:"" )+"#"+( ( @tmp_ms_b_t_[1] )?@tmp_ms_b_t_[1]:"" )+"#"+( ( @tmp_ms_b_t_[2] )?@tmp_ms_b_t_[2]:"" )+"#"+( ( @tmp_ms_b_t_[3] )?@tmp_ms_b_t_[3]:"" )+"#"+( ( @tmp_ms_b_t_[4] )?@tmp_ms_b_t_[4]:"" )+"#"+( ( @tmp_ms_b_t_[5] )?@tmp_ms_b_t_[5]:"" )+"#"+( ( @tmp_ms_b_t_[6] )?@tmp_ms_b_t_[6]:"" )+"#"+( ( @tmp_ms_b_t_[7] )?@tmp_ms_b_t_[7]:"" )+"#"+( ( @tmp_ms_b_t_[8] )?@tmp_ms_b_t_[8]:"" )+"#"+( ( @tmp_ms_b_t_[9] )?@tmp_ms_b_t_[9]:"" )+"#"+( ( @tmp_ms_b_t_[10] )?@tmp_ms_b_t_[10]:"" )+"#"+( ( @tmp_ms_b_t_[11] )?@tmp_ms_b_t_[11]:"" )+"#"+( ( @tmp_ms_b_t_[12] )?@tmp_ms_b_t_[12]:"" )+"#"+( ( @tmp_ms_b_t_[13] )?@tmp_ms_b_t_[13]:"" )+"#"+( ( @tmp_ms_b_t_[14] )?@tmp_ms_b_t_[14]:"" )+"#"+( ( @tmp_ms_b_t_[15] )?@tmp_ms_b_t_[15]:"" )+"#"+( ( @tmp_ms_b_ir_[0] )?@tmp_ms_b_ir_[0]:"" )+"#"+( ( @tmp_ms_b_ir_[1] )?@tmp_ms_b_ir_[1]:"" )+"#"+( ( @tmp_ms_b_ir_[2] )?@tmp_ms_b_ir_[2]:"" )+"#"+( ( @tmp_ms_b_ir_[3] )?@tmp_ms_b_ir_[3]:"" )+"#"+( ( @tmp_ms_b_ir_[4] )?@tmp_ms_b_ir_[4]:"" )+"#"+( ( @tmp_ms_b_ir_[5] )?@tmp_ms_b_ir_[5]:"" )+"#"+( ( @tmp_ms_b_ir_[6] )?@tmp_ms_b_ir_[6]:"" )+"#"+( ( @tmp_ms_b_ir_[7] )?@tmp_ms_b_ir_[7]:"" )+"#"+( ( @tmp_ms_b_ir_[8] )?@tmp_ms_b_ir_[8]:"" )+"#"+( ( @tmp_ms_b_ir_[9] )?@tmp_ms_b_ir_[9]:"" )+"#"+( ( @tmp_ms_b_ia_[0] )?@tmp_ms_b_ia_[0]:"" )+"#"+( ( @tmp_ms_b_ia_[1] )?@tmp_ms_b_ia_[1]:"" )+"#"+( ( @tmp_ms_b_ia_[2] )?@tmp_ms_b_ia_[2]:"" )+"#"+( ( @tmp_ms_b_ia_[3] )?@tmp_ms_b_ia_[3]:"" )+"#"+( ( @tmp_ms_b_ia_[4] )?@tmp_ms_b_ia_[4]:"" )+"#"+( ( @tmp_ms_b_ia_[5] )?@tmp_ms_b_ia_[5]:"" )+"#"+( ( @tmp_ms_b_ia_[6] )?@tmp_ms_b_ia_[6]:"" )+"#"+( ( @tmp_ms_b_ia_[7] )?@tmp_ms_b_ia_[7]:"" )+"#"+( ( @tmp_ms_b_ia_[8] )?@tmp_ms_b_ia_[8]:"" )+"#"+( ( @tmp_ms_b_ia_[9] )?@tmp_ms_b_ia_[9]:"" );
						deletearray @tmp_ms_b_m_$;
						deletearray @tmp_ms_b_m_;
						deletearray @tmp_ms_b_t_;
						deletearray @tmp_ms_b_ir_;
						deletearray @tmp_ms_b_ia_;
						set @m_id, 0;
						mes " ";
						mes "mission edit completed";
						next;
						break;
					case 3:
						mes "["+ strnpcinfo(1) +"]";
						if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
							mes "You must setup a mission first";
							next;
							break;
						}
						mes "pick a mission to delete";
						next;
						set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
						for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 )
							set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
						set .@menu$, .@menu$ +":^000000 - back";
						set .@menu, select(.@menu$) -1;
						if ( .@menu == getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ) ) break;
						mes "["+ strnpcinfo(1) +"]";
						mes "are you sure you want to delete this mission ?";
						mes " ";
						set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
						mes "^996600"+ .@m_id +". ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$") +"^000000";
						mes "Description: ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[1]") +"^000000";
						next;
						if ( select ( "No", "Yes" ) == 1 ) break;
						mes "["+ strnpcinfo(1) +"]";
						mes "this mission has deleted";
						mes " ";
						mes "^996600"+ .@m_id +". ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$") +"^000000";
						deletearray getd(".ms_b_m_"+ .@m_id +"$");
						deletearray getd(".ms_b_m_"+ .@m_id );
						deletearray getd(".ms_b_t_"+ .@m_id );
						deletearray getd(".ms_b_ir_"+ .@m_id );
						deletearray getd(".ms_b_ia_"+ .@m_id );
						deletearray getd("$ms_b_m_"+ .@m_id +"$");
						deletearray getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]"), 1;
						setd "$ms_b_n_"+ strnpcinfo(2) +"$", ( ( getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") )?getd(".ms_b_n_"+ strnpcinfo(2) +"[0]"):"" );
						for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ); set .@i, .@i +1 )
							setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
						next;
						break;
					case 4:
						mes "["+ strnpcinfo(1) +"]";
						if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
							mes "You must setup a mission first";
							next;
							break;
						}
						mes "pick a mission to swap";
						next;
						set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
						for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 )
							set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
						set .@menu$, .@menu$ +":^000000 - back";
						set .@menu, select(.@menu$) -1;
						if ( .@menu == getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ) ) break;
						mes "["+ strnpcinfo(1) +"]";
						mes "mission selected :";
						set .@m_id1, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
						mes "^996600"+ .@m_id1 +". ^0000FF"+ getd("$ms_b_m_"+ .@m_id1 +"$") +"^000000";
						mes " ";
						mes "pick another mission to swap";
						next;
						set .@menu2, select(.@menu$) -1;
						if ( .@menu2 == getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ) ) break;
						mes "["+ strnpcinfo(1) +"]";
						mes "these both missions are swapped";
						set .@m_id2, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu2 +"]");
						mes "^996600"+ .@m_id1 +". ^0000FF"+ getd("$ms_b_m_"+ .@m_id1 +"$") +"^000000";
						mes "^996600"+ .@m_id2 +". ^0000FF"+ getd("$ms_b_m_"+ .@m_id2 +"$") +"^000000";
						setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]", .@m_id2;
						setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu2 +"]", .@m_id1;
						setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd(".ms_b_n_"+ strnpcinfo(2) +"[0]");
						for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ); set .@i, .@i +1 )
							setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
						next;
						break;
				}
			}
	}
	close;
OnQuest1TimeUp:
	dispbottom "Mission #1: "+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]") +" has Time Up";
	deletearray @ms_b_m_1;
	set ms_b_m_1$, "";
	end;
OnQuest2TimeUp:
	dispbottom "Mission #2: "+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]") +" has Time Up";
	deletearray @ms_b_m_2;
	set ms_b_m_2$, "";
	end;
OnQuest3TimeUp:
	dispbottom "Mission #3: "+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]") +" has Time Up";
	deletearray @ms_b_m_3;
	set ms_b_m_3$, "";
	end;
OnQuest4TimeUp:
	dispbottom "Mission #4: "+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]") +" has Time Up";
	deletearray @ms_b_m_4;
	set ms_b_m_4$, "";
	end;
L_showprogress:
	mes "^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[0]") +"^000000";
	mes "Description: ^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[1]") +"^000000";
	mes " ";
	mes "[mission progress]";
	if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[5]") ) {
		set .@left, getd("@ms_b_m_"+ @slot +"[1]") - gettimetick(2);
		set .@hour, .@left / 3600;
		set .@min, .@left % 3600 / 60;
		set .@sec, .@left % 60;
		mes "Time Left:  ^FF0000"+( ( .@hour )?.@hour +" hour ":"" )+( ( .@hour || .@min )?.@min +" min ":"" )+ .@sec +" sec^000000";
	}
	for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 )
		mes "Mobs : ^0000FF"+ getmonsterinfo( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") , 0) +"^000000 ["+( ( getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") > getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") )?getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]"):getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") ) +"/"+ getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +"]";
	for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 )
		mes "Items : ^0000FF"+ getitemname( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000 ["+ countitem( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"/"+ getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +"]";
	mes " ";
	mes "[Rewards]";
	if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") )
		mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) +"^000000";
	if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") )
		mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) +"^000000";
	if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") )
		mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +"^000000";
	if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") )
		mes "Cash Point : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +"^000000";
	for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 )
		mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000";
	mes " ";
	return;
L_setupmission:
	while (1) {
		mes "["+ strnpcinfo(1) +"]";
		mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
		mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
		mes " ";
		if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
			mes "require mobs : ^FF0000Incomplete^000000";
		for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
			mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
		if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
			mes "require items : ^FF0000Incomplete^000000";
		for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
			mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
		mes " ";
		if ( @tmp_ms_b_m_[6] || @tmp_ms_b_m_[3] || @tmp_ms_b_m_[5] || @tmp_ms_b_m_[2] ) {
			mes "[Limitations]";
			if ( @tmp_ms_b_m_[6] )
				mes "Can do : "+( ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
			if ( @tmp_ms_b_m_[3] )
				mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?"  ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
			if ( @tmp_ms_b_m_[5] )
				mes "Time Limit : ^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000";
			if ( @tmp_ms_b_m_[2] ) {
				deletearray .@joblimit;
				for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
					if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
						set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
					}
				}
				set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
				for ( set .@i, 1; .@i < getarraysize(.@joblimit); set .@i, .@i +1 )
					set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
				mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
			}
			mes " ";
		}
		mes "[Rewards]";
		if ( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ )
			set .@color_reward$, "";
		else {
			mes "^FF0000Incomplete^000000";
			set .@color_reward$, "  - ^FF0000Incomplete^000000";
		}
		if ( @tmp_ms_b_m_[7] )
			mes "Base Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ) +"^000000";
		if ( @tmp_ms_b_m_[8] )
			mes "Job Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ) +"^000000";
		if ( @tmp_ms_b_m_[9] )
			mes "Zeny : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ) +"^000000";
		if ( @tmp_ms_b_m_[10] )
			mes "Cash Point : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ) +"^000000";
		for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
			mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
		next;
		if ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) &&
			( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ ) )
			set .@color_all$, "^00CC00";
		else
			set .@color_all$, "^FF0000";
		set .@setupmenu, select (
			"Important Setups"+( ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) )?"":"  - ^FF0000Incomplete^000000" ),
			"Mission Limitations",
			"Rewards"+ .@color_reward$,
			.@color_all$ +"Complete "+( ( getarg(0) )?"Edit":"Setup" )+"^000000",
			"- back" );
		switch ( .@setupmenu ) {
			case 1:
				while (1) {
					mes "["+ strnpcinfo(1) +"]";
					mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
					mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
					mes " ";
					if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
						mes "require mobs : ^FF0000Incomplete^000000";
					for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
						mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
					if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
						mes "require items : ^FF0000Incomplete^000000";
					for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
						mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
					next;
					set .@importantmenu, select (
						"Mission Name"+( ( @tmp_ms_b_m_$[0] != "" )?"":"  - ^FF0000Incomplete^000000" ),
						"Description"+( ( @tmp_ms_b_m_$[1] != "" )?"":"  - ^FF0000Incomplete^000000" ),
						"Require Mobs",
						"Require Items",
						"- back" );
					switch ( .@importantmenu ) {
						case 1:
							mes "["+ strnpcinfo(1) +"]";
							mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "input mission name";
							next;
							input .@tmp$;
							mes "["+ strnpcinfo(1) +"]";
							if ( getstrlen(.@tmp$) > 55 ) {
								mes "the mission name must not more than 55 characters";
								next;
								break;
							}
							else if ( compare ( .@tmp$, ":" ) || compare ( .@tmp$, "^" ) ) {
								mes "Not allow to input these symbol";
								mes "-> : <- colon";
								mes "-> ^ <- caret";
								next;
								break;
							}
							mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Are you sure wanna change to";
							mes "^0000FF"+ .@tmp$ +"^000000";
							next;
							if ( select ( "Yes", "No" ) == 2 ) break;
							set @tmp_ms_b_m_$[0], .@tmp$;
							break;
						case 2:
							mes "["+ strnpcinfo(1) +"]";
							mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "input description";
							next;
							set .@tmp1$, "";
							set .@tmp2$, "";
							set .@tmp3$, "";
							set .@tmp, 0;
							do {
								set .@tmp, .@tmp +1 ;
								input getd(".@tmp"+ .@tmp +"$");
							} while ( getstrlen( getd(".@tmp"+ .@tmp +"$") ) > 50 && .@tmp < 3 );
							mes "["+ strnpcinfo(1) +"]";
							mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Are you sure wanna change to";
							mes "^0000FF"+ .@tmp1$ + .@tmp2$ + .@tmp3$ +"^000000";
							next;
							if ( select ( "Yes", "No" ) == 2 ) break;
							set @tmp_ms_b_m_$[1], .@tmp1$ + .@tmp2$ + .@tmp3$;
							break;
						case 3:
							if ( getarg(0) ) {
								mes "["+ strnpcinfo(1) +"]";
								mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
								mes " ";
								mes "not allow to edit require mob";
								mes "this is the only option can't edit";
								next;
								break;
							}
							while (1) {
								mes "["+ strnpcinfo(1) +"]";
								mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
								mes " ";
								if ( @tmp_ms_b_t_ == 0 )
									mes "require mobs :";
								for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
									mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
								next;
								set .@mobmenu, select ( "add monster to kill", "remove monster to kill", "- back" );
								switch ( .@mobmenu ) {
									case 1:
										mes "["+ strnpcinfo(1) +"]";
										mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_t_ == 0 )
											mes "require mobs :";
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
											mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
										mes " ";
										if ( getarraysize(@tmp_ms_b_t_) == 16 ) {
											mes "only allow up to 8 kinds of mobs";
											next;
											break;
										}
										mes "input monster id";
										next;
										input .@tmp, 0, 9999;
										mes "["+ strnpcinfo(1) +"]";
										if ( .@tmp == 0 ) {
											mes "invalid value";
											next;
											break;
										}
										else if ( getmonsterinfo(.@tmp, 1) == -1 ) {
											mes "invalid monster id";
											next;
											break;
										}
										if ( @tmp_ms_b_t_ == 0 )
											mes "require mobs :";
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
											mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
										mes " ";
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 ) {
											if ( .@tmp == @tmp_ms_b_t_[.@i] ) break;
										}
										if ( .@i != getarraysize(@tmp_ms_b_t_) ) {
											mes "mob ^0000FF"+ getmonsterinfo(.@tmp, 0) +"^000000 is being repeated";
											next;
											break;
										}
										mes "require mobs : ^0000FF"+ getmonsterinfo(.@tmp, 0) +"^000000";
										mes "input amount of this monster need to kill";
										next;
										input .@tmp2, 0, 999;
										if ( .@tmp2 == 0 ) {
											mes "["+ strnpcinfo(1) +"]";
											mes "invalid amount";
											next;
										}
										else
											setarray @tmp_ms_b_t_[ getarraysize(@tmp_ms_b_t_) ], .@tmp, .@tmp2;
										break;
									case 2:
										mes "["+ strnpcinfo(1) +"]";
										mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_t_ == 0 ) {
											mes "there are no monster to remove";
											next;
											break;
										}
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
											mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
										mes " ";
										mes "select a mob to delete";
										next;
										set .@menu$, "^0000FF"+ @tmp_ms_b_t_[1] +" "+ getmonsterinfo(@tmp_ms_b_t_, 0);
										for ( set .@i, 2; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
											set .@menu$, .@menu$ +":"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0);
										set .@menu$, .@menu$ +"^000000:- back";
										set .@menu, select(.@menu$) -1;
										if ( .@menu == getarraysize(@tmp_ms_b_t_) /2 ) break;
										deletearray @tmp_ms_b_t_[ .@menu *2 ], 2;
									case 3:
								}
								if ( .@mobmenu == 3 ) break;
							}
							break;
						case 4:
							while (1) {
								mes "["+ strnpcinfo(1) +"]";
								mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
								mes " ";
								if ( @tmp_ms_b_ir_ == 0 )
									mes "require items :";
								for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
									mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
								next;
								set .@item_require_menu, select ( "add item requirement", "remove a require item", "- back" );
								switch ( .@item_require_menu ) {
									case 1:
										mes "["+ strnpcinfo(1) +"]";
										mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ir_ == 0 )
											mes "require items : ";
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
											mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
										mes " ";
										if ( getarraysize(@tmp_ms_b_ir_) == 10 ) {
											mes "only allow up to 5 kinds of items";
											next;
											break;
										}
										mes "input item id for item requirement";
										next;
										input .@tmp, 0, 32767;
										mes "["+ strnpcinfo(1) +"]";
										if ( getitemname(.@tmp) == "null" ) {
											mes "invalid item id";
											next;
											break;
										}
										mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ir_ == 0 )
											mes "require items : ";
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
											mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
										mes " ";
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 ) {
											if ( .@tmp == @tmp_ms_b_ir_[.@i] ) break;
										}
										if ( .@i != getarraysize(@tmp_ms_b_ir_) ) {
											mes "item ^0000FF"+ getitemname(.@tmp) +"^000000 is being repeated";
											next;
											break;
										}
										mes "require items : ^0000FF"+ getitemname(.@tmp) +"^000000";
										mes "input item amount for item requirement";
										next;
										input .@tmp2, 0, 30000;
										if ( .@tmp2 == 0 ) {
											mes "["+ strnpcinfo(1) +"]";
											mes "invalid amount";
											next;
										}
										else
											setarray @tmp_ms_b_ir_[ getarraysize(@tmp_ms_b_ir_) ], .@tmp, .@tmp2;
										break;
									case 2:
										mes "["+ strnpcinfo(1) +"]";
										mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ir_ == 0 ) {
											mes "there are no item to remove";
											next;
											break;
										}
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
											mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
										mes " ";
										mes "select an item to delete";
										next;
										set .@menu$, "^0000FF"+ @tmp_ms_b_ir_[1] +" "+ getitemname(@tmp_ms_b_ir_);
										for ( set .@i, 2; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
											set .@menu$, .@menu$ +":"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]);
										set .@menu$, .@menu$ +"^000000:- back";
										set .@menu, select(.@menu$) -1;
										if ( .@menu == getarraysize(@tmp_ms_b_ir_) /2 ) break;
										deletearray @tmp_ms_b_ir_[ .@menu *2 ], 2;
									case 3:
								}
								if ( .@item_require_menu == 3 ) break;
							}
						case 5:
					}
					if ( .@importantmenu == 5 ) break;
				}
				break;
			case 2:
				while (1) {
					mes "["+ strnpcinfo(1) +"]";
					mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
					mes " ";
					mes "[Limitations]";
					mes "Can do : "+( ( @tmp_ms_b_m_[6] == 0 )?"^0000FFRepeatedly": ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
					mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?"  ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
					mes "Time Limit : "+( ( @tmp_ms_b_m_[5] )?"^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000":"" );
					if ( @tmp_ms_b_m_[2] == 0 )
						mes "Job Limit : ^FF0000<none>^000000";
					else {
						deletearray .@joblimit;
						for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
							if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
								set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
							}
						}
						set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
						for ( set .@i, 1; .@i < getarraysize(.@joblimit); set .@i, .@i +1 )
							set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
						mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
					}
					next;
					set .@limitmenu, select ( "Mission Status (Can do)", "Base Level", "Time Limit", "Job limitation", "- back" );
					switch ( .@limitmenu ) {
						case 1:
							mes "["+ strnpcinfo(1) +"]";
							mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Can do : "+( ( @tmp_ms_b_m_[6] == 0 )?"^0000FFRepeatedly": ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
							mes "Please select a status";
							next;
							switch ( select ( "^0000FFRepeatedly^000000", "^00CC00Everyday^000000", "^FF0000Only Once^000000" ) ) {
								case 1: set @tmp_ms_b_m_[6], 0; break;
								case 2: set @tmp_ms_b_m_[6], 1; break;
								case 3: set @tmp_ms_b_m_[6], 2;
							}
							break;
						case 2:
							mes "["+ strnpcinfo(1) +"]";
							mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Base Level :";
							mes " ";
							mes "Input starting range";
							next;
							input .@tmp, 0, 1000;
							if ( .@tmp == 0 ) {
								mes "["+ strnpcinfo(1) +"]";
								mes "invalid value";
								set @tmp_ms_b_m_[3], 0;
								set @tmp_ms_b_m_[4], 0;
								next;
								break;
							}
							mes "["+ strnpcinfo(1) +"]";
							mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Base Level : ^0000FF"+ .@tmp +"~^000000";
							mes " ";
							mes "Input ending range";
							next;
							input .@tmp2, 0, 1000;
							if ( .@tmp2 == 0 ) {
								mes "["+ strnpcinfo(1) +"]";
								mes "invalid value";
								set @tmp_ms_b_m_[3], 0;
								set @tmp_ms_b_m_[4], 0;
								next;
								break;
							}
							else if ( .@tmp > .@tmp2 ) {
								mes "["+ strnpcinfo(1) +"]";
								mes "ending range cannot higher than starting range";
								next;
								break;
							}
							else
								setarray @tmp_ms_b_m_[3], .@tmp, .@tmp2;
							break;
						case 3:
							mes "["+ strnpcinfo(1) +"]";
							mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
							mes " ";
							mes "Time Limit : "+( ( @tmp_ms_b_m_[5] )?"^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000":"" );
							mes "      1 = 1 minute";
							mes "    60 = 1 hour";
							mes "1440 = 1 day";
							next;
							input @tmp_ms_b_m_[5], 0, 1440;
							break;
						case 4:
							while (1) {
								mes "["+ strnpcinfo(1) +"]";
								mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
								mes " ";
								if ( @tmp_ms_b_m_[2] == 0 )
									mes "Job Limit : ^FF0000<none>^000000";
								else {
									deletearray .@joblimit;
									for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
										if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
											set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
										}
									}
									set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
									for ( set .@i, 1; .@i < getarraysize(.@joblimit); set .@i, .@i +1 )
										set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
									mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
								}
								next;
								set .@menu$, ( ( @tmp_ms_b_m_[2] & pow( 2, 0 ) )?"^00CC00":"^FF0000" )+ .jobname$;
								for ( set .@i, 1; .@i < 24; set .@i,.@i +1 )
									set .@menu$, .@menu$ +":"+( ( @tmp_ms_b_m_[2] & pow( 2, .@i ) )?"^00CC00":"^FF0000" )+ .jobname$[.@i];
								set .@menu$, .@menu$ +":^000000- back";
								set .@menu, select(.@menu$) -1;
								if ( .@menu == 24 ) break;
								set @tmp_ms_b_m_[2], @tmp_ms_b_m_[2] ^ pow( 2, .@menu );
							}
							break;
						case 5:
					}
					if ( .@limitmenu == 5 ) break;
				}
				break;
			case 3:
				while (1) {
					mes "["+ strnpcinfo(1) +"]";
					mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
					mes " ";
					mes "[Rewards]";
					mes "Base Exp : "+( ( @tmp_ms_b_m_[7] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ):"^FF00000" ) +"^000000";
					mes "Job Exp : "+( ( @tmp_ms_b_m_[8] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ):"^FF00000" ) +"^000000";
					mes "Zeny : "+( ( @tmp_ms_b_m_[9] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ):"^FF00000" ) +"^000000 ";
					mes "Cash Point : "+( ( @tmp_ms_b_m_[10] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ):"^FF00000" ) +"^000000";
					if ( @tmp_ms_b_ia_ == 0 )
						mes "Item : ";
					for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
						mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
					next;
					set .@rewardmenu, select ( "Base Exp", "Job Exp", "Zeny", "Cash Points", "Item Rewards", "- back" );
					switch ( .@rewardmenu ) {
						case 1:
							input @tmp_ms_b_m_[7], 0, 2000000000;
							break;
						case 2:
							input @tmp_ms_b_m_[8], 0, 2000000000;
							break;
						case 3:
							input @tmp_ms_b_m_[9], 0, 2000000000;
							break;
						case 4:
							input @tmp_ms_b_m_[10], 0, 2000000000;
							break;
						case 5:
							while (1) {
								mes "["+ strnpcinfo(1) +"]";
								mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
								mes " ";
								if ( @tmp_ms_b_ia_ == 0 )
									mes "Item :";
								for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
									mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
								next;
								set .@item_reward_menu, select ( "add item reward", "remove an item reward", "- back" );
								switch ( .@item_reward_menu ) {
									case 1:
										mes "["+ strnpcinfo(1) +"]";
										mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ia_ == 0 )
											mes "Item : ";
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
											mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
										mes " ";
										if ( getarraysize(@tmp_ms_b_ia_) == 10 ) {
											mes "only allow up to 5 kinds of items";
											next;
											break;
										}
										mes "input item id for item reward";
										next;
										input .@tmp, 0, 32767;
										mes "["+ strnpcinfo(1) +"]";
										if ( getitemname(.@tmp) == "null" ) {
											mes "invalid item id";
											next;
											break;
										}
										mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ia_ == 0 )
											mes "Item : ";
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
											mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
										mes " ";
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 ) {
											if ( .@tmp == @tmp_ms_b_ia_[.@i] ) break;
										}
										if ( .@i != getarraysize(@tmp_ms_b_ia_) ) {
											mes "item ^0000FF"+ getitemname(.@tmp) +"^000000 is being repeated";
											next;
											break;
										}
										mes "Item : ^0000FF"+ getitemname(.@tmp) +"^000000";
										mes "input item amount for item reward";
										next;
										input .@tmp2, 0, 30000;
										if ( .@tmp2 == 0 ) {
											mes "["+ strnpcinfo(1) +"]";
											mes "invalid amount";
											next;
										}
										else
											setarray @tmp_ms_b_ia_[ getarraysize(@tmp_ms_b_ia_) ], .@tmp, .@tmp2;
										break;
									case 2:
										mes "["+ strnpcinfo(1) +"]";
										mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
										mes " ";
										if ( @tmp_ms_b_ia_ == 0 ) {
											mes "there are no item to remove";
											next;
											break;
										}
										for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
											mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
										mes " ";
										mes "select an item to delete";
										next;
										set .@menu$, "^0000FF"+ @tmp_ms_b_ia_[1] +" "+ getitemname(@tmp_ms_b_ia_);
										for ( set .@i, 2; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
											set .@menu$, .@menu$ +":"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]);
										set .@menu$, .@menu$ +"^000000:- back";
										set .@menu, select(.@menu$) -1;
										if ( .@menu == getarraysize(@tmp_ms_b_ia_) /2 ) break;
										deletearray @tmp_ms_b_ia_[ .@menu *2 ], 2;
									case 3:
								}
								if ( .@item_reward_menu == 3 ) break;
							}
						case 6:
					}
					if ( .@rewardmenu == 6 ) break;
				}
				break;
			case 4:
				mes "["+ strnpcinfo(1) +"]";
				if ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) &&
					( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ ) ) {
					mes "mission ID: ^996600"+( ( getarg(0) == 0 )?$ms_b_id +1:@m_id )+"^000000";
					mes "mission name : ^0000FF"+ @tmp_ms_b_m_$[0] +"^000000";
				}
				else {
					mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
					mes " ";
					mes "some field are still Incomplete !";
					next;
					break;
				}
				mes "Description: ^0000FF"+ @tmp_ms_b_m_$[1] +"^000000";
				mes " ";
				for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
					mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
				for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
					mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
					mes " ";
				if ( @tmp_ms_b_m_[6] || @tmp_ms_b_m_[3] || @tmp_ms_b_m_[5] || @tmp_ms_b_m_[2] ) {
					mes "[Limitations]";
					if ( @tmp_ms_b_m_[6] )
						mes "Can do : "+( ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
					if ( @tmp_ms_b_m_[3] )
						mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?"  ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
					if ( @tmp_ms_b_m_[5] )
						mes "Time Limit : ^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000";
					if ( @tmp_ms_b_m_[2] ) {
						deletearray .@joblimit;
						for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
							if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
								set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
							}
						}
						set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
						for ( set .@i, 1; .@i < getarraysize(.@joblimit); set .@i, .@i +1 )
							set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
						mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
					}
					mes " ";
				}
				mes "[Rewards]";
				if ( @tmp_ms_b_m_[7] )
					mes "Base Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ) +"^000000";
				if ( @tmp_ms_b_m_[8] )
					mes "Job Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ) +"^000000";
				if ( @tmp_ms_b_m_[9] )
					mes "Zeny : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ) +"^000000";
				if ( @tmp_ms_b_m_[10] )
					mes "Cash Point : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ) +"^000000";
				for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
					mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
				return 1;
			case 5:
				return 0;
		}
	}
	end;
OnInit:
	set .loading, 1;
	set .total_npc, .total_npc +1 ;
	if ( atoi( strnpcinfo(2) ) <= 0 || atoi( strnpcinfo(2) ) > 127 ) {
		debugmes "Mission Board: invalid npc id #"+ strnpcinfo(2);
		end;
	}
	else if ( .ms_b_name$[ atoi( strnpcinfo(2) ) ] != "" ) {
		debugmes "Mission Board: duplicate npc id #"+ strnpcinfo(2);
		set .duplicate_id[ getarraysize(.duplicate_id) ], atoi( strnpcinfo(2) );
		end;
	}
	set .ms_b_name$[ atoi( strnpcinfo(2) ) ], strnpcinfo(1);
	set .@tmp$, "|~key~|"; // explode
	set .@str$, .@tmp$ + getd("$ms_b_n_"+ strnpcinfo(2) +"$");
	set .@len, getstrlen( getd("$ms_b_n_"+ strnpcinfo(2) +"$") );
	setarray .@char$, "#", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9";
	set .@s, 0;
	set .@p, 0;
	while ( .@len > .@s ) {
		set .@i, 0;
		while ( .@i < 11 ) {
			if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
				set .@tmp$, .@tmp$ + .@char$[.@i];
				if ( .@i )
					setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@p +"]", getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@p +"]") + .@char$[.@i];
				else
					set .@p, .@p +1 ;
				break;
			}
			set .@i, .@i +1 ;
		}
		set .@s, .@s +1 ;
		if ( .@p % 10 == 1 ) sleep 1;
	}
	set .@id, 0;
	while ( .@id < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ) ) {
		sleep 1;
		set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@id +"]");
		set .@tmp$, "|~key~|"; // explode
		set .@str$, .@tmp$ + getd("$ms_b_m_"+ .@m_id +"$[2]");
		set .@len, getstrlen( getd("$ms_b_m_"+ .@m_id +"$[2]") );
		set .@s, 0;
		set .@p, 2;
		while ( .@len > .@s ) {
			set .@i, 0;
			while ( .@i < 11 ) {
				if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
					set .@tmp$, .@tmp$ + .@char$[.@i];
					if ( .@i )
						setd ".ms_b_m_"+ .@m_id +"["+ .@p +"]", getd(".ms_b_m_"+ .@m_id +"["+ .@p +"]") + .@char$[.@i];
					else
						set .@p, .@p +1 ;
					break;
				}
				set .@i, .@i +1 ;
			}
			set .@s, .@s +1 ;
			if ( .@p % 8 == 7 ) sleep 1;
		}
		sleep 1;
		set .@tmp$, "|~key~|"; // explode
		set .@str$, .@tmp$ + getd("$ms_b_m_"+ .@m_id +"$[3]");
		set .@len, getstrlen( getd("$ms_b_m_"+ .@m_id +"$[3]") );
		set .@s, 0;
		set .@p, 0;
		while ( .@len > .@s ) {
			set .@i, 0;
			while ( .@i < 11 ) {
				if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
					set .@tmp$, .@tmp$ + .@char$[.@i];
					if ( .@i )
						setd ".ms_b_t_"+ .@m_id +"["+ .@p +"]", getd(".ms_b_t_"+ .@m_id +"["+ .@p +"]") + .@char$[.@i];
					else
						set .@p, .@p +1 ;
					break;
				}
				set .@i, .@i +1 ;
			}
			set .@s, .@s +1 ;
			if ( .@p % 10 == 1 ) sleep 1;
		}
		copyarray getd(".ms_b_ir_"+ .@m_id), getd(".ms_b_t_"+ .@m_id +"[16]"), 10;
		copyarray getd(".ms_b_ia_"+ .@m_id), getd(".ms_b_t_"+ .@m_id +"[26]"), 10;
		deletearray getd(".ms_b_t_"+ .@m_id +"[16]"), 20;
		set .@id, .@id +1 ;
	}
	set .finish, .finish +1;
	if ( .finish == .total_npc ) {
		set .finish, 0;
		set .total_npc, 0;
		set .loading, 0;
		setarray .jobname$,	"(Super) Novice","Swordman","Mage","Archer","Acolyte","Merchant","Thief","Knight","Priest","Wizard","Blacksmith","Hunter","Assassin","Crusader","Monk","Sage","Rogue","Alchemist","Bard/Dancer","Taekwon","Star Gladiator","Soul Linker","Gunslinger","Ninja";
	}
	end;
}

-	script	mission	-1,{
OnWhisperGlobal:
	if ( getvariableofnpc( .loading, "ms_b_") == 1 ) {
		dispbottom "Loading Mission Data ......";
		end;
	}
	if ( @ms_b_loading == 1 ) {
		dispbottom "Loading Player Data ......";
		end;
	}
	for ( set .@i, 1; .@i <= 4; set .@i, .@i +1 ) {
		if ( getd("@ms_b_m_"+ .@i) ) {
			if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") == "" ) {
				dispbottom "Mission Board: Your Mission#"+ .@i +" has deleted";
				deletearray getd("@ms_b_m_"+ .@i);
				setd "ms_b_m_"+ .@i +"$", "";
				deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
			}
			else if ( getd("@ms_b_m_"+ .@i +"[1]") && getd("@ms_b_m_"+ .@i +"[1]") <= gettimetick(2) ) {
				dispbottom "Mission #1: "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") +" has Time Up";
				deletearray getd("@ms_b_m_"+ .@i);
				setd "ms_b_m_"+ .@i +"$", "";
				deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
			}
		}
	}
	dispbottom "[Mission Progress]";
	if ( @ms_b_m_1 == 0 && @ms_b_m_2 == 0 && @ms_b_m_3 == 0 && @ms_b_m_4 == 0 ) {
		dispbottom ">> no mission";
		end;
	}
	for ( set .@j, 1; .@j <= 4; set .@j, .@j +1 ) {
		if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
			dispbottom "   -----------------------";
			dispbottom "   Mission #"+ .@j +":  "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]");
			if ( getvariableofnpc( getd(".ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"[5]"), "ms_b_" ) ) {
				set .@left, getd("@ms_b_m_"+ .@j +"[1]") - gettimetick(2);
				set .@hour, .@left / 3600;
				set .@min, .@left % 3600 / 60;
				set .@sec, .@left % 60;
				dispbottom "       Time Left:  "+( ( .@hour )?.@hour +" hour ":"" )+( ( .@hour || .@min )?.@min +" min ":"" )+ .@sec +" sec";
			}
			if ( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ) {
				dispbottom "       Require mobs:";
				for ( set .@i, 0; .@i < getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ); set .@i, .@i +2 )
					dispbottom "           "+ getmonsterinfo( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) , 0) +" ["+( ( getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") > getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) )?getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ):getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") ) +"/"+ getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) +"]";
			}
			if ( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ) {
				dispbottom "       Require items:";
				for ( set .@i, 0; .@i < getarraysize( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ); set .@i, .@i +2 )
					dispbottom "           "+ getitemname( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) +" ["+ countitem( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) +"/"+ getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) +"]";
			}
		}
	}
	dispbottom "   -----------------------";
	end;
OnNPCKillEvent:
	if ( getvariableofnpc( .loading, "ms_b_") == 1 ) end;
	if ( getcharid(1) == 0 ) {
		if ( @ms_b_loading == 1 ) end;
		for ( set .@j, 1; .@j <= 4; set .@j, .@j +1 ) {
			if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
				if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
					dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted";
					deletearray getd("@ms_b_m_"+ .@j);
					setd "ms_b_m_"+ .@j +"$", "";
					deltimer "ms_b_::OnQuest"+ .@j +"TimeUp";
				}
				else {
					for ( set .@i, 0; .@i < getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ); set .@i, .@i +2 ) {
						if ( killedrid == getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) {
							setd "@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]", getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +1;
							setd "ms_b_m_"+ .@j +"$", getd("@ms_b_m_"+ .@j +"[0]") +"#"+( ( getd("@ms_b_m_"+ .@j +"[1]") )?getd("@ms_b_m_"+ .@j +"[1]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[2]") )?getd("@ms_b_m_"+ .@j +"[2]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[3]") )?getd("@ms_b_m_"+ .@j +"[3]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[4]") )?getd("@ms_b_m_"+ .@j +"[4]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[5]") )?getd("@ms_b_m_"+ .@j +"[5]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[6]") )?getd("@ms_b_m_"+ .@j +"[6]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[7]") )?getd("@ms_b_m_"+ .@j +"[7]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[8]") )?getd("@ms_b_m_"+ .@j +"[8]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[9]") )?getd("@ms_b_m_"+ .@j +"[9]"):"" );
						}
					}
				}
			}
		}
		end;
	}
	set .@killedrid, killedrid;
	getmapxy .@map1$, .@x1, .@y1, 0;
	getpartymember getcharid(1), 1;
	getpartymember getcharid(1), 2;
	set .@k, 0;
	while ( .@k < $@partymembercount ) {
		if ( isloggedin( $@partymemberaid[.@k], $@partymembercid[.@k] ) ) {
			attachrid $@partymemberaid[.@k];
			getmapxy .@map2$, .@x2, .@y2, 0;
			if ( @ms_b_loading == 0 && .@map1$ == .@map2$ && distance(.@x1,.@y1,.@x2,.@y2) <= 30 ) {
				set .@j, 1;
				while ( .@j <= 4 ) {
					if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
						if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
							dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted";
							deletearray getd("@ms_b_m_"+ .@j);
							setd "ms_b_m_"+ .@j +"$", "";
							deltimer "ms_b_::OnQuest"+ .@j +"TimeUp";
						}
						else {
							set .@i, 0;
							while ( .@i < getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ) ) {
								if ( .@killedrid == getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) {
									setd "@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]", getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +1;
									setd "ms_b_m_"+ .@j +"$", getd("@ms_b_m_"+ .@j +"[0]") +"#"+( ( getd("@ms_b_m_"+ .@j +"[1]") )?getd("@ms_b_m_"+ .@j +"[1]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[2]") )?getd("@ms_b_m_"+ .@j +"[2]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[3]") )?getd("@ms_b_m_"+ .@j +"[3]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[4]") )?getd("@ms_b_m_"+ .@j +"[4]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[5]") )?getd("@ms_b_m_"+ .@j +"[5]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[6]") )?getd("@ms_b_m_"+ .@j +"[6]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[7]") )?getd("@ms_b_m_"+ .@j +"[7]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[8]") )?getd("@ms_b_m_"+ .@j +"[8]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[9]") )?getd("@ms_b_m_"+ .@j +"[9]"):"" );
								}
								set .@i, .@i +2 ;
							}
						}
					}
					set .@j, .@j +1 ;
				}
			}
		}
		set .@k, .@k +1 ;
	}
	end;
OnPCLoginEvent:
	set @ms_b_loading, 1;
	set .@j, 1;
	while ( .@j <= 4 ) {
		if ( getd("ms_b_m_"+ .@j +"$") != "" ) {
			set .@tmp$, "|~key~|"; // explode
			set .@str$, .@tmp$ + getd("ms_b_m_"+ .@j +"$");
			set .@len, getstrlen( getd("ms_b_m_"+ .@j +"$") );
			setarray .@char$, "#", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9";
			set .@s, 0;
			set .@p, 0;
			while ( .@len > .@s ) {
				set .@i, 0;
				while ( .@i < 11 ) {
					if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
						set .@tmp$, .@tmp$ + .@char$[.@i];
						if ( .@i )
							setd ".@ms_b_m_"+ .@j +"$["+ .@p +"]", getd(".@ms_b_m_"+ .@j +"$["+ .@p +"]") + .@char$[.@i];
						else
							set .@p, .@p +1 ;
						break;
					}
					set .@i, .@i +1 ;
				}
				set .@s, .@s +1 ;
				if ( .@p == 4 ) sleep2 1;
			}
			setarray getd("@ms_b_m_"+ .@j), getd(".@ms_b_m_"+ .@j +"$[0]"), getd(".@ms_b_m_"+ .@j +"$[1]"), getd(".@ms_b_m_"+ .@j +"$[2]"), getd(".@ms_b_m_"+ .@j +"$[3]"), getd(".@ms_b_m_"+ .@j +"$[4]"), getd(".@ms_b_m_"+ .@j +"$[5]"), getd(".@ms_b_m_"+ .@j +"$[6]"), getd(".@ms_b_m_"+ .@j +"$[7]"), getd(".@ms_b_m_"+ .@j +"$[8]"), getd(".@ms_b_m_"+ .@j +"$[9]");
			sleep2 1;
		}
		set .@j, .@j +1 ;
	}
	while ( .@npc_id < 128 ) {
		if ( getvariableofnpc( .ms_b_name$[.@npc_id], "ms_b_" ) != "" ) {
			set .@tmp$, "|~key~|"; // explode
			set .@str$, .@tmp$ + getd("ms_b_n_"+ .@npc_id +"$");
			set .@len, getstrlen( getd("ms_b_n_"+ .@npc_id +"$") );
			setarray .@char$, "#", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9";
			set .@s, 0;
			set .@p, 0;
			while ( .@len > .@s ) {
				set .@i, 0;
				while ( .@i < 11 ) {
					if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
						set .@tmp$, .@tmp$ + .@char$[.@i];
						if ( .@i )
							setd "@ms_b_n_"+ .@npc_id +"["+ .@p +"]", getd("@ms_b_n_"+ .@npc_id +"["+ .@p +"]") + .@char$[.@i];
						else
							set .@p, .@p +1 ;
						break;
					}
					set .@i, .@i +1 ;
				}
				set .@s, .@s +1 ;
				if ( .@p % 10 == 1 ) sleep2 1;
			}
			sleep2 1;
		}
		set .@npc_id, .@npc_id +1 ;
	}
	set @ms_b_loading, 0;
	if ( getvariableofnpc( .loading, "ms_b_" ) == 0 ) {
		set .@j, 1;
		while ( .@j <= 4 ) {
			if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
				if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
					dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted";
					deletearray getd("@ms_b_m_"+ .@j);
					setd "ms_b_m_"+ .@j +"$", "";
				}
				else if ( getd("@ms_b_m_"+ .@j +"[1]") ) {
					if ( getd("@ms_b_m_"+ .@j +"[1]") > gettimetick(2) )
						addtimer ( getd("@ms_b_m_"+ .@j +"[1]") - gettimetick(2) ) *1000, "ms_b_::OnQuest"+ .@j +"TimeUp";
					else
						doevent "ms_b_::OnQuest"+ .@j +"TimeUp";
				}
			}
			set .@j, .@j +1 ;
		}
	}
	end;
}

//	add more missions by duplicates here
//	you can use any name, but the hidden name #1 #2 #35 whatever must be within #1 ~ #126
//	and remember your display npc name plus the hidden name must not more than 23 characters

prontera,164,219,4	duplicate(ms_b_)	Prontera mission#9	113
//morocc,160,97,5	duplicate(ms_b_)	Morocc mission#10	113
//geffen,121,56,56	duplicate(ms_b_)	Geffen mission#11	113
//payon,168,67,5	duplicate(ms_b_)	Payon mission#12	113
//alberta,122,59,5	duplicate(ms_b_)	Alberta mission#13	113
//izlude,116,125,5	duplicate(ms_b_)	Izlude mission#14	113
//aldebaran,145,108,5	duplicate(ms_b_)	Aldebaran mission#15	113
//xmas,154,131,5	duplicate(ms_b_)	Lutie mission#16	113
//comodo,189,145,5	duplicate(ms_b_)	Comodo mission#17	113
//yuno,137,173,5	duplicate(ms_b_)	Yuno mission#18	113
//amatsu,190,108,5	duplicate(ms_b_)	Amatsu mission#19	113
//gonryun,152,113,5	duplicate(ms_b_)	Gonryun mission#20	113
//umbala,118,130,5	duplicate(ms_b_)	Umbala mission#21	113
//louyang,208,101,5	duplicate(ms_b_)	Louyang mission#22	113
//ayothaya,157,171,5	duplicate(ms_b_)	Ayothaya mission#23	113
//einbroch,68,196,5	duplicate(ms_b_)	Einbroch mission#24	113
//lighthalzen,154,106,5	duplicate(ms_b_)	Lighthalzen mission#25	113
//hugel,102,152,5	duplicate(ms_b_)	Hugel mission#26	113
//rachel,119,146,5	duplicate(ms_b_)	Rachel mission#27	113
//veins,221,128,5	duplicate(ms_b_)	Veins mission#28	113
//bat_b01,305,176,5	duplicate(ms_b_)	Olympus mission#29	113
//bat_b01,316,175,5	duplicate(ms_b_)	Easy mission#30	113
//bat_b01,307,175,5	duplicate(ms_b_)	Medium mission#31	113
//bat_b01,310,175,5	duplicate(ms_b_)	Hard mission#32	113
//bat_b01,320,175,5	duplicate(ms_b_)	Expert mission#33	113
//einbech,80,103,5	duplicate(ms_b_)	Einbech Mission#34	113
//jawaii,214,237,5	duplicate(ms_b_)	Jawaii Mission#35	113
//moscovia,157,58,5	duplicate(ms_b_)	Moscovia Mission#36	113
//nameless_n,253,213,5	duplicate(ms_b_)	Nameless Mission#37	113
//niflheim,77,153,5	duplicate(ms_b_)	Niflheim Mission#38	113
//thor_camp,257,87,5	duplicate(ms_b_)	Thor Champ Mission#39	113
//mid_camp,206,282,5	duplicate(ms_b_)	Mid Champ Mission#40	113
//manuk,267,173,5	duplicate(ms_b_)	Manuk Mission#41	113
//splendide,193,152,5	duplicate(ms_b_)	Splendide Mission#42	113
//brasilis,192,214,5	duplicate(ms_b_)	Brasilis Mission#43	113

 

 

Edited by hendra814
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

I couldn't reproduce your problem

and eathena board down too, I couldn't remember which bug I've fixed between 2.0 to 2.4

 

I remember I fixed a critical bug in 2.4a, if server owner set an Everyday field in a mission, can cause the script forever into infinite loop

-> totally make that player unable to access to any feature on the board

 

I think you misunderstood the time limit feature, if I still recall correctly what I wrote on eathena forum ...

time limit is supposed to encourage players to form party ... so they can complete the quest faster

so let's say kill 50 hydra, if solo might take about 30 minutes,

but when force a time limitation of 15 minutes will make players realized they have to form party to kill monster faster

 

you say you set time limit of 24 hours ... which I don't think that really serve any purpose

because my script , although it says Everyday = Daily quest, my script reset the variable on every 12am, not every 24 hours

 

example : most script out there use gettimetick(2) + 24*60*60 to deny players from taking quest for another 24 hours

my scripts, including this one, follow other MMORPG method I've played, reset the variable every 12am

I can take mission at 11.30pm, complete it, and just wait a few more minutes, 12.am I take the same mission again and complete it again

 

damn it, I have 4 posts to explain all features about this script, and it took me about 3 days to write them all

now paradog force me to explain everything again

 

I tested with this setting

[Mission Board]
Name : test789
Description : test

Require item : 1 Red Potion


[Limitation]
Can do : Everyday
Time Limit : 24 hours

[Rewards]
Base Exp : 1

 

Edited by AnnieRuru
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  54
  • Topics Per Day:  0.01
  • Content Count:  1167
  • Reputation:   159
  • Joined:  06/12/12
  • Last Seen:  

38 minutes ago, AnnieRuru said:

I couldn't reproduce your problem

and eathena board down too, I couldn't remember which bug I've fixed between 2.0 to 2.4

 

I remember I fixed a critical bug in 2.4a, if server owner set an Everyday field in a mission, can cause the script forever into infinite loop

-> totally make that player unable to access to any feature on the board

 

I think you misunderstood the time limit feature, if I still recall correctly what I wrote on eathena forum ...

time limit is supposed to encourage players to form party ... so they can complete the quest faster

so let's say kill 50 hydra, if solo might take about 30 minutes,

but when force a time limitation of 15 minutes will make players realized they have to form party to kill monster faster

 

you say you set time limit of 24 hours ... which I don't think that really serve any purpose

because my script , although it says Everyday = Daily quest, my script reset the variable on every 12am, not every 24 hours

 

example : most script out there use gettimetick(2) + 24*60*60 to deny players from taking quest for another 24 hours

my scripts, including this one, follow other MMORPG method I've played, reset the variable every 12am

I can take mission at 11.30pm, complete it, and just wait a few more minutes, 12.am I take the same mission again and complete it again

 

damn it, I have 4 posts to explain all features about this script, and it took me about 3 days to write them all

now paradog force me to explain everything again

okay i got your point.

thanks Annie.

Edited by hendra814
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

I've tested with this mission setting, before I post ver 2.4b

this should do your trick

[Mission Board]
Name : test123
Description : test

Require item : 1 Red Potion

[Limitation]
Can do : Everyday


[Rewards]
Base Exp : 1

 

here's a tip, when you go to Edit a mission in Administrator settings, the quest will most likely to show in Blue (default), because they are Repeatable quests

so if you want to double check all quests on the board is a daily quest, make sure go to Edit a mission, and double check all quest should be all in Green = Everyday

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  162
  • Topics Per Day:  0.05
  • Content Count:  1546
  • Reputation:   192
  • Joined:  07/23/14
  • Last Seen:  

@AnnieRuru This is mine...

This first picture, is to show you i finished the mission already. with the 100k zeny reward.

screenWickedRO155.thumb.jpg.378cba4dd50a5bf7ee543a85b65c6c85.jpg

And then these pictures are the example that when, the mission is set to Can do(everyday) at that same time. I can add that mission again and again...

screenWickedRO156.thumb.jpg.9e017e397c238e89de630d06a466bc72.jpg

screenWickedRO157.thumb.jpg.6a16ff306a67d386eca917ff6e717da6.jpg

screenWickedRO158.thumb.jpg.e9d70a8db6c19037bbbf9203b5d1f6c5.jpg

 

  • Like 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  54
  • Topics Per Day:  0.01
  • Content Count:  1167
  • Reputation:   159
  • Joined:  06/12/12
  • Last Seen:  

6 hours ago, Radian said:

@AnnieRuru This is mine...

This first picture, is to show you i finished the mission already. with the 100k zeny reward.

screenWickedRO155.thumb.jpg.378cba4dd50a5bf7ee543a85b65c6c85.jpg

And then these pictures are the example that when, the mission is set to Can do(everyday) at that same time. I can add that mission again and again...

screenWickedRO156.thumb.jpg.9e017e397c238e89de630d06a466bc72.jpg

screenWickedRO157.thumb.jpg.6a16ff306a67d386eca917ff6e717da6.jpg

screenWickedRO158.thumb.jpg.e9d70a8db6c19037bbbf9203b5d1f6c5.jpg

 

Try remove the time limit, because i'm solve with that

so after the quest complete he/she must wait until another day to take/accept the quest.

@AnnieRuru

Your new script get bugged when set time limitation for setting can do: Everyday.

not like 2.0 version.

Edited by hendra814
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

31 minutes ago, hendra814 said:

@AnnieRuru

 

Your new script get bugged when set time limitation for setting can do: Everyday.

tell me how to reproduce the bug, I've tried several scenario and still unable to reproduce it

 

[Mission Board]
Name : Poring Hunt
Description : test

Require Mobs : 100 Poring

[Limitation]
Can do : Everyday
BaseLevel : 130~150
Time Limit : 15 min

[Rewards]
Zeny : 100,000

after I submit the mission, the quest turns RED, and say that long long stuffs about deny usage

 

 

man ... why members say my script is bug when I can't even reproduce it .... its the same as my scuffle event, I could never reproduce the bug like those 3 members said

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  54
  • Topics Per Day:  0.01
  • Content Count:  1167
  • Reputation:   159
  • Joined:  06/12/12
  • Last Seen:  

2 hours ago, AnnieRuru said:

tell me how to reproduce the bug, I've tried several scenario and still unable to reproduce it

 


[Mission Board]
Name : Poring Hunt
Description : test

Require Mobs : 100 Poring

[Limitation]
Can do : Everyday
BaseLevel : 130~150
Time Limit : 15 min

[Rewards]
Zeny : 100,000

after I submit the mission, the quest turns RED, and say that long long stuffs about deny usage

 

 

man ... why members say my script is bug when I can't even reproduce it .... its the same as my scuffle event, I could never reproduce the bug like those 3 members said

sorry, try like this

Quote

 


[Mission Board]
Name : Poring coin collection
Description : test

Require Item : 10 Poring coin
Require Item Amount : 10

[Limitation]
Can do : Everyday
Time Limit : 24 min

[Rewards]
Item : Poring coin
quantity : 20

that's my daily quest before using time limit.

using 2.0 version the quest stop after complete the quest

using 2.4 player still can take the quest after complete the quest.

but after remove time limit using 2.4, player can't take the quest again after complete the quest.

if i have free time, i will give screen capture to you.

here my ss

v 2.4

Spoiler

screenrAthena034.thumb.jpg.18c2302562c018e73396dda9eeca1f12.jpg

screenrAthena035.thumb.jpg.43ff043fc8a64bf1a07c48ec25ea444d.jpg

screenrAthena036.thumb.jpg.25a0b047017b617fa4111a92ada2adf4.jpg

screenrAthena037.thumb.jpg.48a9c7b370cd94ec5ebc57914c1f1d34.jpg

screenrAthena038.thumb.jpg.cc80af8c72fe871b5c3fcc8d15c1b181.jpg

screenrAthena039.thumb.jpg.596ecfacc5c8dcd041341606a3d8fcea.jpg

screenrAthena040.thumb.jpg.5e54759a19a5e61d0aad2a1c4d766f8a.jpg

screenrAthena041.thumb.jpg.8d6169ca5f1735f53d3e65fb29ba85f1.jpg

v 2.0

Spoiler

screenrAthena042.thumb.jpg.3e759f48aea1e8dd555feb59b1649f72.jpg

screenrAthena043.thumb.jpg.9d6055a3957265d31f4c89ce71d8fb20.jpg

screenrAthena044.thumb.jpg.8bf83bd67834e9d0f9ff46464683bc34.jpg

screenrAthena045.thumb.jpg.30545ee2f8e37b342e155ac268c80faf.jpg

screenrAthena046.thumb.jpg.c4de419d651952c886615d784b81e366.jpg

screenrAthena047.thumb.jpg.ad9018a20b30189e9247912dcf149239.jpg

screenrAthena048.thumb.jpg.dac7460d2f60d1f3a56f3bbd8cb92169.jpg

screenrAthena049.thumb.jpg.f65d44c45e0f45eb82cc6a69ddb8e8da.jpg

screenrAthena050.thumb.jpg.ec21130785782f64bd0c1da4fffb6565.jpg

screenrAthena051.thumb.jpg.3d18b28d86e1456024455bb4cb7ded85.jpg

 

Edited by hendra814
  • Like 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

2.4c http://upaste.me/7c9c496344829d36f

- fix this f*cking deny usage once again ...this time when submit a mission, the getarraysize calculation is made AFTER declare the datetime format

- if the whole board is set to EVERYDAY, remove the player side deny usage variable completely on the next day

@hendra814  @Radian

 

EDIT for below: the bug has nothing to do with time limit, but only happens if the whole board set to EVERYDAY

I couldn't reproduced the bug before because I have already set some quest in the board, until Radian told me to make another duplicate npc ...

in a clean board ... duplicated npc where no mission has been set, then setup every quest to EVERYDAY, then I finally able to reproduce the bug

Edited by AnnieRuru
  • Upvote 1
  • Love 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  54
  • Topics Per Day:  0.01
  • Content Count:  1167
  • Reputation:   159
  • Joined:  06/12/12
  • Last Seen:  

48 minutes ago, AnnieRuru said:

2.4c http://upaste.me/7c9c496344829d36f

- fix this f*cking deny usage once again ...this time when submit a mission, the getarraysize calculation is made AFTER declare the datetime format

- if the whole board is set to EVERYDAY, remove the player side deny usage variable completely on the next day

@hendra814  @Radian

Thanks a lot @AnnieRuru

The script working now with time limitation.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  9
  • Topics Per Day:  0.00
  • Content Count:  477
  • Reputation:   269
  • Joined:  06/13/17
  • Last Seen:  

@AnnieRuru

I Tried using this script its awesome. But there was this thing. I added Kill Nidhogg Shadow as quest.. but the kill count doesn't increase.

It only increase when i use @monster command. but when killing it on instance. it doesnt count

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

I've already explained this in eathena board ... yeah eathena board down ... another long explanation needed ...

 

well don't need anymore, aleos already explained here in github

https://github.com/rathena/rathena/issues/1949

 

long story short, nope, even the developers are not fixing this

so you can't setup a board near instance npc, but only on the world map that monster spawn without event labels

Edited by AnnieRuru
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  40
  • Topics Per Day:  0.02
  • Content Count:  242
  • Reputation:   37
  • Joined:  02/25/18
  • Last Seen:  

Hallo Annie,

thanks for updating on this topic http://herc.ws/board/topic/15578-mission-board-only-once-doesnt-work/ ... I just wanted to let you know that I had problems giving my GMs with group_id 10 to manage the missions, so I replaced (getgmlevel () <99) with (getgroupid () < 10) and now it works well for me.
Forgive me but I'm not a good coder and I could not in any way make it work for my GMs (without gropid_id 99), so I do not know if I did the right thing but that works for what I needed

  • Love 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  40
  • Topics Per Day:  0.02
  • Content Count:  242
  • Reputation:   37
  • Joined:  02/25/18
  • Last Seen:  

Good morning AnnieRuru, I wanted to ask you if there is an addon or php file to see a players ranking and/or the list of missions from FluxCP or from any web page?!

(example like this old Mission Board script)

Thanks again for your time ;)

Edited by CyberDevil
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

only emistry's version that store all the data on SQL table can do that

mine ... no ...

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  162
  • Topics Per Day:  0.05
  • Content Count:  1546
  • Reputation:   192
  • Joined:  07/23/14
  • Last Seen:  

On 4/25/2018 at 8:16 PM, AnnieRuru said:

only emistry's version that store all the data on SQL table can do that

mine ... no ...

Can i suggest to save all the missions into a different table? so its easy to find. If that is possible

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

×
×
  • Create New...