// ~~~~~ 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 EXP and Midgard Coins"; 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 "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]"); } 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 "Cash Point : ^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 "Cash Point : ^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 "Cash Point : ^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^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^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 "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 : "; 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", "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 "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 "Cash Point : ^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 prontera,158,188,5 duplicate(ms_b_) Mission Board#3 837