Jump to content
  • 0

Help Mission_board Script npc by: Annieruru Jobs restrictions not work


admagnus

Question


  • Group:  Members
  • Topic Count:  14
  • Topics Per Day:  0.01
  • Content Count:  33
  • Reputation:   2
  • Joined:  11/22/16
  • Last Seen:  

 

hello everyone, I need help with an npc created by: annieruru.  is the npc of mission_board. I have a problem, when I try to put the restrictions on the jobs. he does not read them, he lets me take them with all classes equally.

Spoiler

function    script    F_MesItemInfo    {
    .@item = getarg(0);
    .@itemname$ = getitemname(.@item);
    if (.@itemname$ != "null") {
        .@itemslot = getitemslots(.@item);
        if (.@itemslot)
            .@itemname$ = sprintf("%s [%d]", .@itemname$, .@itemslot);
    }
    else
        .@itemname$ = "Unknown Item";
    if (PACKETVER >= 20150729)
        return sprintf("<ITEM>%s<INFO>%d</INFO></ITEM>", .@itemname$, .@item);
    else if (PACKETVER >= 20130130)
        return sprintf("<ITEMLINK>%s<INFO>%d</INFO></ITEMLINK>", .@itemname$, .@item);
    else
        return .@itemname$;
}

//    ~~~~~ 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$;
}

//===== rAthena Script ============================================
//= Mission Board
//===== By: =======================================================
//= AnnieRuru
//===== Current Version: ==========================================
//= 2.5r
//===== Compatible With: ==========================================
//= rathena 2019-02-04
//===== Description: ==============================================
//= allow admin to setup their own quests dynamically
//===== Topic =====================================================
//= https://rathena.org/board/topic/118144-upgrade-annieruru-mission-board/
//===== Additional Comments: ======================================
//= add F_MesItemInfo
//=================================================================

-    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";
    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 #"+ .@i +": "+ 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) +"$", "";
        deletearray getd( "@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) +"]") +" "+ F_MesItemInfo( 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);
                set .@size, getarraysize( getd("@ms_b_n_"+ strnpcinfo(2) ) );
                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) +"]") +" "+ F_MesItemInfo( 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) +"]") +" "+ F_MesItemInfo( 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"+ F_MesItemInfo( 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) +"]") +" "+ F_MesItemInfo( 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] +" "+ F_MesItemInfo(@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] +" "+ F_MesItemInfo(@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] +" "+ F_MesItemInfo(@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] +" "+ F_MesItemInfo(@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] +" "+ F_MesItemInfo(@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] +" "+ F_MesItemInfo(@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"+ F_MesItemInfo(.@tmp) +"^000000 is repeated";
                                            next;
                                            break;
                                        }
                                        mes "Require items : ^0000FF"+ F_MesItemInfo(.@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] +" "+ F_MesItemInfo(@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 "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] +" "+ F_MesItemInfo(@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] +" "+ F_MesItemInfo(@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] +" "+ F_MesItemInfo(@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] +" "+ F_MesItemInfo(@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"+ F_MesItemInfo(.@tmp) +"^000000 is repeated";
                                            next;
                                            break;
                                        }
                                        mes "Item : ^0000FF"+ F_MesItemInfo(.@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] +" "+ F_MesItemInfo(@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] +" "+ F_MesItemInfo(@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] +" "+ F_MesItemInfo(@tmp_ms_b_ia_[.@i]) +"^000000";
                return 1;
            case 5:
                return 0;
        }
    }
    end;
OnInit:
    bindatcmd "mission", "mission::OnWhisperGlobal";
    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
prontera,163,188,5    duplicate(ms_b_)    Mission Board#9    837
prontera,168,188,5    duplicate(ms_b_)    Mission Board#23    837

 

adjunt npc script.

mission_board_2.5r.txt

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 1

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

that's one of my old bad habit, forgot to enclose bitmask check into bracket

https://github.com/AnnieRuru/Release/blob/master/scripts/Quest %26 Shops/Mission Board/mission_board_r2.6.txt

  • Love 1
  • MVP 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  14
  • Topics Per Day:  0.01
  • Content Count:  33
  • Reputation:   2
  • Joined:  11/22/16
  • Last Seen:  

thank you very much... i want to know how can i add a job branch restriction, like a restriction just for third clases or just for first clases... the old npc version of emistry went with a restriction like that, but is to old and bug and it requires sql... By the way, i was searching for your content and just find this article http://herc.ws/board/topic/7218-sample-questlog-script/ and i want to know if by any chance is there a sample quest log script for athena, and thank you again for being very active in this forums.

EDIT: Nevermind i just add the restriction i wanted to and find the eathena questlog-script.

On 3/25/2019 at 8:19 PM, AnnieRuru said:

that's one of my old bad habit, forgot to enclose bitmask check into bracket

https://github.com/AnnieRuru/Release/blob/master/scripts/Quest %26 Shops/Mission Board/mission_board_r2.6.txt

thank you very much... i want to know how can i add a job branch restriction, like a restriction just for third clases or just for first clases... the old npc version of emistry went with a restriction like that, but is to old and bug and it requires sql... By the way, i was searching for your content and just find this article http://herc.ws/board/topic/7218-sample-questlog-script/ and i want to know if by any chance is there a sample quest log script for athena, and thank you again for being very active in this forums.

EDIT: Nevermind i just add the restriction i wanted to and find the eathena questlog-script.

Edited by admagnus
all solved
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:  

6 hours ago, admagnus said:

thank you very much... i want to know how can i add a job branch restriction, like a restriction just for third clases or just for first clases... the old npc version of emistry went with a restriction like that, but is to old and bug and it requires sql...

this script is just super old ...
when this script was freshly made version 1.0, 3rd job wasn't even release yet (year 2009)

there is a get-around, by using level range + job restriction, since 3rd job is always level > 99

 

5 hours ago, admagnus said:

By the way, i was searching for your content and just find this article http://herc.ws/board/topic/7218-sample-questlog-script/ and i want to know if by any chance is there a sample quest log script for athena, and thank you again for being very active in this forums.

EDIT: Nevermind i just add the restriction i wanted to and find the eathena questlog-script.

the sample quest log script was made way back during eathena period,
so rathena should support up 0.3 I guess

version 1.0 and above is just hercules

about the daily quest ... although its custom, but *setquest with adjustable time limit is official
I think rathena will get to it eventually after convert quest_db.txt into YAML format...

  • MVP 1
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...