Jump to content
  • 0
foutaf

Need Help with jobmaster script

Question

Hi there

 

Im newbie here and have a first script problem ahah

 

I used the jobmaster custom script hercule default and i want to add a getitem function by class

Exemple, when the jobmaster change u into archer class, u get a list of item for archer class. And this for all class. I hope you will understand my bad english and could help me with

 

This is the script of jobmaster

Spoiler

//===== Hercules Script ======================================
//= Job Master
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.4
//===== Description: =========================================
//= A fully functional job changer.
//===== Additional Comments: =================================
//= 1.1 Fixed reset on Baby job change. [Euphy]
//= 1.2 Added Expanded Super Novice support and initial Kagerou/Oboro support. [Euphy]
//= 1.3 Kagerou/Oboro added. [Euphy]
//= 1.4 Improved legibility (renamed variables, replaced
//      numbers with constants; Changed syntax to match
//      Hercules standards; Fixed status point exploit upon
//      Baby Novice job change. [Haru]
//============================================================

prontera,153,193,6    script    Job Master    2_F_MAGICMASTER,{
    function Job_Menu; function A_An;

    mes "[Job Master]";
    if (Class > Job_Soul_Linker) {
        mes "No more jobs are available.";
        close;
    }
    if (checkfalcon() || checkcart() || checkmount() || hascashmount()) {
        mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkmount() || hascashmount())?"mount":"")
            +" before proceeding.";
        close;
    }
    if (.skill_point_check && SkillPoint > 0) {
        mes "Please use all your skill points before proceeding.";
        close;
    }

    .@eac = eaclass();
    .@base = .third_classes ? roclass(.@eac&EAJ_UPPERMASK) : Class;
    if (.@base >= Job_Knight && .@base <= Job_Crusader2) {
        if (BaseLevel < .rebirth_blevel || JobLevel < .rebirth_jlevel) {
            .@blvl = .rebirth_blevel - BaseLevel;
            .@jlvl = .rebirth_jlevel - JobLevel;
            mes "You need "
                + (BaseLevel < .rebirth_blevel ? ((.rebirth_blevel - BaseLevel) +" more base levels "+ (JobLevel < .rebirth_jlevel ? "and " : "")) : "")
                + (JobLevel < .rebirth_jlevel ? (.rebirth_jlevel - JobLevel) +" more job levels " : "")
                + "to continue.";
            close;
        }
        if (Class > Job_Crusader2) {
            mes "Switch to third class?";
            next;
            Job_Menu(roclass(.@eac|EAJL_THIRD));
            close;
        }
        while (true) {
            mes "Select an option.";
            next;
            .@choice = select(" ~ ^0055FFRebirth^000000", (.third_classes ? " ~ ^FF0000Third Class^000000":""), " ~ ^777777Cancel^000000");
            if (.@choice == 3)
                close;
            mes "[Job Master]";
            mes "Are you sure?";
            next;
            if (.@choice == 1)
                Job_Menu(Job_Novice_High);
            else
                Job_Menu(roclass(.@eac|EAJL_THIRD));
            mes "[Job Master]";
        }
    }
    .@job1 = roclass(.@eac|EAJL_2_1);
    .@job2 = roclass(.@eac|EAJL_2_2);
    if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) {
        .@newclass = roclass(.@eac|EAJL_THIRD);
        .@required_jlevel = 99;
    } else if (Class == Job_Ninja || Class == Job_Gunslinger) {
        .@newclass = .@job1;
        .@required_jlevel = 70;
    }
    if (.@newclass && .third_classes) {
        if (BaseLevel < .rebirth_blevel || JobLevel < .@required_jlevel) {
            mes "You need "
                + (BaseLevel < .rebirth_blevel ? ((.rebirth_blevel - BaseLevel) +" more base levels "+ (JobLevel < .@required_jlevel ? "and " : "")) : "")
                + (JobLevel < .@required_jlevel ? (.@required_jlevel - JobLevel) +" more job levels " : "")
                + "to continue.";
            close;
        }
        mes "Switch to "+jobname(.@newclass)+"?";
        next;
        Job_Menu(.@newclass);
        close;
    }
    if (.@eac&EAJL_2)
        if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) {
            mes "No more jobs are available.";
            close;
        }
    if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) {
        if (JobLevel < .jobchange_first) {
            mes "A job level of "+.jobchange_first+" is required to change into the 1st Class.";
        } else if (Class == Job_Novice_High && .linear_jobchange && lastJob) {
            mes "Switch classes now?";
            next;
            Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
        } else if (Class == Job_Novice) {
            Job_Menu(Job_Swordman, Job_Mage, Job_Archer, Job_Acolyte, Job_Merchant, Job_Thief,
                     Job_SuperNovice, Job_Taekwon, Job_Gunslinger, Job_Ninja, Job_Baby);
        } else if (Class == Job_Novice_High) {
            Job_Menu(Job_Swordman_High, Job_Mage_High, Job_Archer_High, Job_Acolyte_High, Job_Merchant_High, Job_Thief_High);
        } else if (Class == Job_Baby) {
            Job_Menu(Job_Baby_Swordman, Job_Baby_Mage, Job_Baby_Archer, Job_Baby_Acolyte, Job_Baby_Merchant, Job_Baby_Thief,
                     Job_Super_Baby);
        } else {
            mes "An error has occurred.";
        }
        close;
    }
    if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1) {
        mes "No more jobs are available.";
    } else if (!(.@eac&EAJL_2) && JobLevel < .jobchange_second) {
        mes "A job level of "+.jobchange_second+" is required to change into the 2nd Class.";
    } else if (.linear_jobchange && lastJob && (.@eac&EAJL_UPPER)) {
        mes "Switch classes now?";
        next;
        Job_Menu(lastJob+Job_Novice_High);
    } else {
        Job_Menu(.@job1, .@job2);
    }
    close;

function Job_Menu {
    while (true) {
        if (getargcount() > 1) {
            mes "Select a job.";
            .@menu$ = "";
            for (.@i = 0; .@i < getargcount(); ++.@i)
                .@menu$ += " ~ "+jobname(getarg(.@i))+":";
            .@menu$ += " ~ ^777777Cancel^000000";
            next;
            .@newjob = getarg(select(.@menu$)-1, 0);
            if (!.@newjob) close;
            if ((.@newjob == Job_SuperNovice || .@newjob == Job_Super_Baby) && BaseLevel < .supernovice_level) {
                mes "[Job Master]";
                mes "A base level of "+.supernovice_level+" is required to turn into a "+jobname(.@newjob)+".";
                close;
            }
            mes "[Job Master]";
            mes "Are you sure?";
            next;
        } else {
            .@newjob = getarg(0);
        }
        if (select(" ~ Change into ^0055FF"+ jobname(.@newjob) +"^000000 class", " ~ ^777777"+(getargcount() > 1 ? "Go back": "Cancel")+"^000000") == 1) {
            mes "[Job Master]";
            mes "You are now "+A_An(jobname(.@newjob))+"!";
            if (.@newjob == Job_Novice_High && .linear_jobchange)
                lastJob = Class; // Note: This is incompatible with the Valkyrie rebirth script.
            jobchange .@newjob;
            if (.@newjob == Job_Novice_High)
                resetlvl(1);
            if (.@newjob == Job_Baby) {
                resetlvl(4);
                SkillPoint = 0;
            }
            specialeffect(EF_ANGEL2, AREA, playerattached());
            specialeffect(EF_ELECTRIC, AREA, playerattached());
            if (.platinum)
                callsub Get_Platinum;
            close;
        }
        if (getargcount() == 1)
            return;
        mes "[Job Master]";
    }
    end;
}

function A_An {
    setarray .@vowels$, "a", "e", "i", "o", "u";
    .@firstletter$ = strtolower(charat(getarg(0), 0));
    for (.@i = 0; .@i < getarraysize(.@vowels); ++.@i) {
        if (.@vowels$[.@i] == .@firstletter$)
            return "an "+getarg(0);
    }
    return "a "+getarg(0);
}

Get_Platinum:
    skill NV_FIRSTAID, 1, 0;
    if (BaseClass == Job_Novice) {
        if (Class != Job_SuperNovice)
            skill NV_TRICKDEAD, 1, 0;
    } else if (BaseClass == Job_Swordman) {
        skill SM_MOVINGRECOVERY, 1, 0;
        skill SM_FATALBLOW, 1, 0;
        skill SM_AUTOBERSERK, 1, 0;
    } else if (BaseClass == Job_Mage) {
        skill MG_ENERGYCOAT, 1, 0;
    } else if (BaseClass == Job_Archer) {
        skill AC_MAKINGARROW, 1, 0;
        skill AC_CHARGEARROW, 1, 0;
    } else if (BaseClass == Job_Acolyte) {
        skill AL_HOLYLIGHT, 1, 0;
    } else if (BaseClass == Job_Merchant) {
        skill MC_CARTREVOLUTION, 1, 0;
        skill MC_CHANGECART, 1, 0;
        skill MC_LOUD, 1, 0;
    } else if (BaseClass == Job_Thief) {
        skill TF_SPRINKLESAND, 1, 0;
        skill TF_BACKSLIDING, 1, 0;
        skill TF_PICKSTONE, 1, 0;
        skill TF_THROWSTONE, 1, 0;
    }

    if (BaseJob == Job_Knight) {
        skill KN_CHARGEATK, 1, 0;
    } else if (BaseJob == Job_Priest) {
        skill PR_REDEMPTIO, 1, 0;
    } else if (BaseJob == Job_Wizard) {
        skill WZ_SIGHTBLASTER, 1, 0;
    } else if (BaseJob == Job_Blacksmith) {
        skill BS_UNFAIRLYTRICK, 1, 0;
        skill BS_GREED, 1, 0;
    } else if (BaseJob == Job_Hunter) {
        skill HT_PHANTASMIC, 1, 0;
    } else if (BaseJob == Job_Assassin) {
        skill AS_SONICACCEL, 1, 0;
        skill AS_VENOMKNIFE, 1, 0;
    } else if (BaseJob == Job_Crusader) {
        skill CR_SHRINK, 1, 0;
    } else if (BaseJob == Job_Monk) {
        skill MO_KITRANSLATION, 1, 0;
        skill MO_BALKYOUNG, 1, 0;
    } else if (BaseJob == Job_Sage) {
        skill SA_CREATECON, 1, 0;
        skill SA_ELEMENTWATER, 1, 0;
        skill SA_ELEMENTGROUND, 1, 0;
        skill SA_ELEMENTFIRE, 1, 0;
        skill SA_ELEMENTWIND, 1, 0;
    } else if (BaseJob == Job_Rogue) {
        skill RG_CLOSECONFINE, 1, 0;
    } else if (BaseJob == Job_Alchemist) {
        skill AM_BIOETHICS, 1, 0;
    } else if (BaseJob == Job_Bard) {
        skill BA_PANGVOICE, 1, 0;
    } else if (BaseJob == Job_Dancer) {
        skill DC_WINKCHARM, 1, 0;
    }
    return;


OnInit:
    .rebirth_blevel = 99;    // Minimum base level to reborn OR change to third class
    .rebirth_jlevel = 50;    // Minimum base job level to reborn OR change to third class
    .jobchange_first = 10;   // Minimum job level to turn into 1st class
    .jobchange_second = 40;  // Minimum job level to turn into 2nd class
    .third_classes = 1;      // Enable third classes/Extended Classes? (1: yes / 0: no)
    .supernovice_level = 45; // Minimum base level to turn into Super Novice
    .linear_jobchange = 1;   // Enforce linear class changes? (1: yes / 0: no)
    .skill_point_check = 1;  // Force player to use up all skill points? (1: yes / 0: no)
    .platinum = 1;           // Get platinum skills automatically? (1: yes / 0: no)
    end;
}

 

I found a script from rath but it didn't work IG (npc spawn but unclickable). There is the script if it can help

Spoiler

prontera,154,168,6    script    custom Job Master    123,{
function Get_Job_Equip;
// Checks if the Player has the required level.
// closes if not, returns if yes
function    Require_Level    {
    if (BaseLevel < getarg(0) || JobLevel < getarg(1)) {
        .@blvl = getarg(0) - BaseLevel;
        .@jlvl = getarg(1) - JobLevel;
        mes "Level requirement:";
        mes ((getarg(0)>1)? 
            "^bb0000"+getarg(0)+"^000000 (^bb0000Base^000000) / ":"")+"^00bb00"+
            getarg(1)+"^000000 (^00bb00Job^000000)";
        mes "You need " +
            ((.@blvl > 0) ? "^bb0000"+.@blvl+"^000000 more base levels " + 
                ((.@jlvl > 0) ? "and " : "") : "") +
            ((.@jlvl > 0) ? "^00bb00"+.@jlvl+"^000000 more job levels " : "") +
            "to continue.";
        close;
    }
    return;
}

// Checks if the given eac is a baby class
function Is_Baby    {
    return ((getarg(0, eaclass())&EAJL_BABY)>0);
}

// Checks if the player can change to third class.
// Note: This does not include the level checks.
function    Can_Change_Third    {
    // To change to third class you either need to be:
    // * Second Class
    // * Transcendent Second Class
    // * Baby Second Class
    if( !.ThirdClass )
        return false; // Third job change disabled
    if( !(eaclass()&EAJL_2) )
        return false; // Not second Class
    if( eaclass()&EAJL_THIRD )
        return false; // Already Third Class
    if( roclass(eaclass()|EAJL_THIRD) < 0 )
        return false; // Job has no third Class
    if( (eaclass()&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE )
        return false; // Exp. Super Novice equals 3rd Cls, but has it's own case
    if( Is_Baby() && (!.BabyClass || !.BabyThird) )
        return false; // No Baby (Third) change allowed
    return true;
}

function    Can_Rebirth    {
    // To rebirth, you need to be:
    // * Second Class
    if( !.RebirthClass )
        return false; // Rebirth disabled
    if( !(eaclass()&EAJL_2) )
        return false; // Not second Class
    if( eaclass()&(EAJL_UPPER|EAJL_THIRD) )
        return false; // Already Rebirthed/ Third Class
    if( roclass(eaclass()|EAJL_UPPER) < 0 )
        return false; // Job has no transcended class
    if( Is_Baby() && !.BabyClass )
        return false; // No Baby changes allowed
    return true;
}

// Checks if the given eac is a first class
function    Is_First_Cls    {
    return (getarg(0) <= EAJ_TAEKWON);
}

function    Check_Riding    {
    // Note: Why we should always check for Riding:
    // Mounts are considered as another class, which
    // would make this NPC bigger just to handle with
    // those special cases.
    if (checkfalcon() || checkcart() || checkriding() || ismounting()) {
        mes "Please remove your " +
            ((checkfalcon()) ? "falcon" : "") +
            ((checkcart()) ? "cart" : "") +
            ((checkriding()) ? "Peco" : "") +
            ((ismounting()) ? "mount" : "") +
            " before proceeding.";
        close;
    }
    return;
}
function    Check_SkillPoints    {
    if (.SkillPointCheck && SkillPoint) {
        mes "Please use all your skill points before proceeding.";
        close;
    }
    return;
}

// addJobOptions is essentially the same like
// setarray .@array[getarraysize(.@array)],opt1,opt2,...;
// It's just easier to read, since we're using it very often
function    Job_Options    {
    .@argcount = getargcount();
    .@arr_size = getarraysize(getarg(0));
    for( .@i = 1; .@i < .@argcount; .@i++) {
        setarray getelementofarray(getarg(0), .@arr_size++),getarg(.@i);
    }
}

// Begin of the NPC
    mes .NPCName$;
    Check_Riding();
    Check_SkillPoints();

    // initialisation
    .@eac = eaclass();
    .@third_possible = Can_Change_Third();
    .@rebirth_possible = Can_Rebirth();
    .@first_eac = .@eac&EAJ_BASEMASK;
    .@second_eac = .@eac&EAJ_UPPERMASK;
    // Note: These are already set in pc.cpp
    // BaseClass = roclass(.@eac&EAJ_BASEMASK) which is the players First Class
    // BaseJob = roclass(.@eac&EAJ_UPPERMASK) which is the players Second Class
    //dispbottom "Debug: eac ("+.@eac+"), third ("+.@third_possible+"), rebirth("+.@rebirth_possible+"), BaseClass ("+BaseClass+"), BaseJob ("+BaseJob+")";
        
    // From here on the jobmaster checks the current class
    // and fills the the array `.@job_opt` with possible
    // job options for the player.
    
    if( .@rebirth_possible ) {
        // Rebirth option (displayed on the top of the menu)
        Require_Level(.Req_Rebirth[0], .Req_Rebirth[1]);
        Job_Options(.@job_opt, Job_Novice_High);
    }
    if( .@third_possible ) {
        // Third Job change (displayed below rebirth)
        Require_Level(.Req_Third[0], .Req_Third[1]);
        Job_Options(.@job_opt, roclass(.@eac|EAJL_THIRD));
    }
     
    if (.SecondExpanded && 
       (.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE && // is Super Novice
       !(eaclass()&EAJL_THIRD) ) {                     // not already Expanded SN
        // (Baby) Super Novice to Expanded (Baby) Super Novice
           if( !Is_Baby(.@eac) || (.BabyClass && .BabyExpanded) ) {
            // .BabyClass & .BabyExpanded must be enabled if the is a baby
            Require_Level(.Req_Exp_SNOVI[0], .Req_Exp_SNOVI[1]);
            Job_Options(.@job_opt,roclass(.@eac|EAJL_THIRD)); // Expanded SN is "third" cls
        }
    }
    
    if (.SecondExpanded && 
        ((.@eac&(~EAJL_BABY)) == EAJ_NINJA ||         // is (Baby) Ninja
        (.@eac&(~EAJL_BABY)) == EAJ_GUNSLINGER)) {    // is (Baby) Gunslinger
        // (Baby) Ninja to (Baby) Kagerou / Oboro
        // (Baby) Gunslinger to (Baby) Rebellion
        if( !Is_Baby(.@eac) || (.BabyClass && .BabyExpanded) ) {
            // .BabyClass & .BabyExpanded must be enabled if the is a baby
            Require_Level(.Req_Exp_NJ_GS[0], .Req_Exp_NJ_GS[1]);
            // Kagerou, Oboro, Rebellion are considered as a 2-1 class
            Job_Options(.@job_opt, roclass(.@eac|EAJL_2_1));
        }
    }
    
    // Player is Job_Novice, Job_Novice_High or Job_Baby
    if (.@first_eac == EAJ_NOVICE && .@second_eac != EAJ_SUPER_NOVICE) {
        // MAPID_NOVICE, MAPID_SUPER_NOVICE, MAPID_NOVICE_HIGH, MAPID_BABY
        Require_Level(.Req_First[0], .Req_First[1]);
        switch(Class) {
            case Job_Novice:
                // First job change
                Job_Options(.@job_opt,Job_Swordman,
                    Job_Mage, Job_Archer, Job_Acolyte, Job_Merchant, Job_Thief,
                    Job_Super_Novice, Job_Taekwon, Job_Gunslinger, Job_Ninja);
                if( .BabyNovice )
                    Job_Options(.@job_opt, Job_Baby);
                break;
            case Job_Novice_High:
                // Job change after rebirth
                if( .LastJob && lastJob )
                    Job_Options(.@job_opt,
                        roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
                else
                    Job_Options(.@job_opt, 
                        Job_Swordman_High, Job_Mage_High, Job_Archer_High,
                        Job_Acolyte_High, Job_Merchant_High, Job_Thief_High);
                break;
            case Job_Baby:
                if( !.BabyClass )
                    break;
                // First job change as a baby
                Job_Options(.@job_opt, Job_Baby_Swordman, Job_Baby_Mage,
                    Job_Baby_Archer,Job_Baby_Acolyte, Job_Baby_Merchant,
                    Job_Baby_Thief);
                if( .BabyExpanded )
                    Job_Options(.@job_opt, Job_Super_Baby, Job_Baby_Taekwon,
                        Job_Baby_Gunslinger, Job_Baby_Ninja);
                if( .BabySummoner )
                    Job_Options(.@job_opt, Job_Baby_Summoner);
                break;
            default:
                mes "An error has occurred.";
                close;
        }
    } else if( Is_First_Cls(.@eac) ||                 // First Class
               Is_First_Cls(.@eac&(~EAJL_UPPER)) ||    // Trans. First Cls
               (.BabyClass && Is_First_Cls(.@eac&(~EAJL_BABY))) ) {    // Baby First Cls
        // Player is First Class (not Novice)
        // most jobs should have two options here  (2-1 and 2-2)
        .@class1 = roclass(.@eac|EAJL_2_1); // 2-1
        .@class2 = roclass(.@eac|EAJL_2_2); // 2-2
        // dispbottom "Debug: Classes: class1 ("+.@class1+"), class2 ("+.@class2+")";
        if(.LastJob && lastJob && (.@eac&EAJL_UPPER)) {
            // Player is rebirth Cls and linear class changes are enforced
            Require_Level(.Req_Second[0], .Req_Second[1]);
            Job_Options(.@job_opt, lastJob + Job_Novice_High);
        } else {
            // Class is not enforced, player can decide.
            if( .@class1 > 0 ) { // 2-1
                Require_Level(.Req_Second[0], .Req_Second[1]);
                Job_Options(.@job_opt, .@class1);
            }
            if( .@class2 > 0 ) { // 2-2
                Require_Level(.Req_Second[0], .Req_Second[1]);
                Job_Options(.@job_opt, .@class2);
            }
        }
    }
    
    // Displaying the Job Menu defined by .@job_opt.
    // .@job_opt should not be changed below this line.
    function Job_Menu;
    Job_Menu(.@job_opt);
    close;

// Displays the job menu
function    Job_Menu    {
    // getarg(0) is the .@job_opt array holding all available job changes.
    function Confirm_Change;
    while(true) {
        .@opt_cnt =  getarraysize(getarg(0));
        if( .@opt_cnt <= 0 ) {
            mes "No more jobs are available.";
            close;
        }

        .@selected = 0; // Just a single job class given, no select needed
        if (.@opt_cnt > 1) {
            // Multiple job classes given. Select one and save it to .@class
            // After that confirm .@class
            mes "Select a job.";
            .@menu$ = "";
            for (.@i = 0; .@i < .@opt_cnt; .@i++) {
                if( getelementofarray(getarg(0), .@i) == Job_Novice_High)
                    .@jobname$ = "^0055FFRebirth^000000";
                else
                    .@jobname$ = jobname(getelementofarray(getarg(0), .@i));
                .@menu$ = .@menu$ + " ~ " + .@jobname$ + ":";
            }
            .@menu$ = .@menu$+" ~ ^777777Cancel^000000";
            .@selected = select(.@menu$) - 1;
            if( .@selected < 0 || .@selected >= .@opt_cnt )
                close;
            next;
            mes .NPCName$;
        }
        .@class = getelementofarray(getarg(0), .@selected);
        if ((.@class == Job_Super_Novice || .@class == Job_Super_Baby) &&
                BaseLevel < .SNovice) {
            // Special Level Requirement because Super Novice and
            // Super Baby can both be selected in one of the first class
            // changes. That's why the Level Requirement is after and not before
            // the selection.
            mes "A base level of " + .SNovice +
                " is required to turn into a " + jobname(.@class) + ".";
            return;
        }
        // Confirm the Class
        Confirm_Change(.@class, .@opt_cnt > 1);
        next;
        mes .NPCName$;
    }
    return;
}


// Executes the actual jobchange and closes.
function    Job_Change    {
    .@previous_class = Class;
    .@to_cls = getarg(0);
    next;
    mes .NPCName$;
    mes "You are now " + callfunc("F_InsertArticle", jobname(.@to_cls)) + "!";
    if (.@to_cls == Job_Novice_High && .LastJob)
        lastJob = Class; // Saves the lastJob for rebirth
    jobchange .@to_cls;
    if (.@to_cls == Job_Novice_High)
        resetlvl(1);
    else if (.@to_cls == Job_Baby) {
        resetstatus;
        resetskill;
        set SkillPoint,0;
    }
    specialeffect2 EF_ANGEL2;
    specialeffect2 EF_ELECTRIC;
    if (.@previous_class != Class) {
        if (.Platinum)
            callfunc "F_GetPlatinumSkills";
        if (.GetJobEquip)
            Get_Job_Equip();
    }
    close; // Always closes after the change
}

function    Confirm_Change    {
    // Player confirms he want to change into .@class
    .@class = getarg(0, -1);
    .@back = getarg(1, false);
    if( .@class < 0 || eaclass(.@class) == -1 ) {
        mes "Unknown Class Error.";
        close;
    }
    mes "Do you want to change into ^0055FF"+jobname(.@class)+"^000000 class?";
    .@job_option$ = " ~ Change into ^0055FF"+jobname(.@class)+"^000000 class";
    if( .@class == Job_Novice_High)
        .@job_option$ = " ~ ^0055FFRebirth^000000";
    
    if (select(.@job_option$+": ~ ^777777" + 
            ((.@back) ?"Go back" : "Cancel") + "^000000") == 1) {
        Job_Change(.@class);
    }
    if (!.@back)
        close; // "Cancel" pressed
    return;
}

// Function which gives a job related item to the player
// the items are the rewards from the original job change quests
function    Get_Job_Equip    {
    // Note: The item is dropping, when the player can't hold it.
    // But that's better than not giving the item at all.
    .@eac = eaclass();
    if( .@eac&EAJL_THIRD ) {
        // Third Class Items
        getitem 2795,1;    //    Green Apple Ring for every 3rd Class
        switch(BaseJob) {
            // BaseJob of Third Cls
            // For Normal Third, Baby Third and Transcended Third Cls
            case Job_Knight:
                getitem 5746,1;    break;    //    Rune Circlet [1]
            case Job_Wizard:
                getitem 5753,1;    break;    //    Magic Stone Hat [1]
            case Job_Hunter:
                getitem 5748,1;    break;    //    Sniper Goggle [1]
            case Job_Priest:
                getitem 5747,1;    break;    //    Mitra [1]
            case Job_Blacksmith:
                getitem 5749,1;    break;    //    Driver Band [1]
            case Job_Assassin:
                getitem 5755,1;    break;    //    Silent Executor [1]
            case Job_Crusader:
                getitem 5757,1;    break;    //    Dip Schmidt Helm [1]
            case Job_Sage:
                getitem 5756,1;    break;    //    Wind Whisper [1]
            case Job_Bard:
                getitem 5751,1;    break;    //    Maestro Song's Hat [1]
            case Job_Dancer:
                getitem 5758,1;    break;    //    Dying Swan [1]
            case Job_Monk:
                getitem 5754,1;    break;    //    Blazing Soul [1]
            case Job_Alchemist:
                getitem 5752,1;    break;    //    Midas Whisper[1]
            case Job_Rogue:
                getitem 5750,1;         //    Shadow Handicraft [1]
                getitem 6121,1;            //    Makeover Brush
                getitem 6122,1;    break;    //    Paint Brush
        }
    } else if (.@eac&EAJL_2) {
        // Second Class (And not Third Class)
        switch(BaseJob) {
            // Second Class
            case Job_Knight:
                getitem 1163,1;    break;    //    Claymore [0]
            case Job_Priest:
                getitem 1522,1;    break;    //    Stunner [0]
            case Job_Wizard:
                getitem 1617,1;    break;    //    Survivor's Rod [0]
            case Job_Blacksmith:
                getitem 1360,1;    break;    //    Two-Handed-Axe [1]
            case Job_Hunter:
                getitem 1718,1;    break;    //    Hunter Bow [0]
            case Job_Assassin:
                getitem 1254,1;    break;    //    Jamadhar [0]
            case Job_Crusader:
                getitem 1410,1;    break;    //    Lance [0]
            case Job_Monk:
                getitem 1807,1;    break;    //    Fist [0]
            case Job_Sage:
                getitem 1550,1;    break;    //    Book [3]
            case Job_Rogue:
                getitem 1222,1;    break;    //    Damascus [1]
            case Job_Alchemist:
                getitem 1126,1;    break;    //    Saber [2]
            case Job_Bard:
                getitem 1907,1;    break;    //    Guitar [0]
            case Job_Dancer:
                getitem 1960,1;    break;    //    Whip [1]
            case Job_Super_Novice:
                getitem 1208,1;    break;    //    Main Gauche [4]
            case Job_Star_Gladiator:
                getitem 1550,1;    break;    //    Book [3]
            case Job_Soul_Linker:
                getitem 1617,1;    break;    //    Survivor's Rod [0]
        }
    } else {
        // Neither Second or Third Cls
        // => First Cls or not covered by the switch
        switch(BaseClass) {
            // First Class
            case Job_Swordman:
                getitem 1108,1;    break;    //    Blade [4]
            case Job_Mage:
                getitem 1602,1;    break;    //    Rod [4]
            case Job_Archer:
                getitem 1705,1;    break;    //    Composite Bow [4]
            case Job_Acolyte:
                getitem 1505,1;    break;    //    Mace [4]
            case Job_Merchant:
                getitem 1302,1;    break;    //    Axe [4]
            case Job_Thief:
                getitem 1208,1;    break;    //    Main Gauche [4]
            case Job_Gunslinger:
                getitem 13101,1; break;    //    Six Shooter [2]
            case Job_Ninja:
                getitem 13010,1; break;    //    Asura [2]
        }
    }
    return;
}

OnInit:
    // Initialisation, do not edit these
    .NPCName$ = "[Job Master]";
    
    // Settings
    .ThirdClass = true;            // Enable third classes?
    .RebirthClass = true;            // Enable rebirth classes?
    .SecondExpanded = true;        // Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion?
    .BabyNovice = true;    // Enable Baby novice classes? Disable it if you like player must have parent to get job baby.
    .BabyClass = true;                // Enable Baby classes?
    .BabyThird = true;                // Enable Baby third classes?
    .BabyExpanded = true;            // Enable Baby Expanded classes: Ex. Baby Ninja, Baby Taekwon, etc.
    .BabySummoner = true;            // Enable Baby Summoner?
    .LastJob = true;                // Enforce linear class changes?
    .SkillPointCheck = true;        // Force player to use up all skill points?
    .Platinum = true;                // Get platinum skills automatically?
    .GetJobEquip = false;            // Get job equipment (mostly weapons) on job change?

    // Level Requirements
    setarray .Req_First[0],1,10;         // Minimum base level, job level to turn into 1st class
    setarray .Req_Second[0],1,40;         // Minimum base level, job level to turn into 2nd class
    setarray .Req_Rebirth[0],99,50;        // Minimum base level, job level to rebirth
    setarray .Req_Third[0],99,50;        // Minimum base level, job level to change to third class
    setarray .Req_Exp_NJ_GS[0],99,70;     // Minimum base level, job level to turn into Expanded Ninja and Gunslinger
    setarray .Req_Exp_SNOVI[0],99,99;     // Minimum base level, job level to turn into Expanded Super Novice
    .SNovice = 45;                        // Minimum base level to turn into Super Novice
    
    // Setting adjustments by PACKETVER
    if( PACKETVER < 20161207 ) {
        if( .BabyExpanded )
            debugmes "jobmaster: BabyExpanded is disabled due to outdated PACKETVER.";
        if( .BabySummoner )
            debugmes "jobmaster: BabySummoner is disabled due to outdated PACKETVER.";
        .BabyExpanded = false;
        .BabySummoner = false;
    }
    end;
}

 

Thanks for help

Edited by foutaf

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Hello Heroji,

 

thanks for ur answer.

Yes i'm ok to add this but where i have to do it ?

Because the "basejob==" is only on the platinium skill part and so there is'nt all the class

So that is why im lost ahah

 

Thanks again

Share this post


Link to post
Share on other sites
  • 0

try use this one and add getitem for each case callsub..

//==============================================================================//
//= Script Release : Job Changer + Max Leveler  [ Version 1.6 ]
//==================================By==========================================//
//= ManiacSociety
//==============================================================================//
//= Idea Came From : ManiacSociety
//= Helper : Emistry & Kenpachi
//==============================================================================//
//= D E S C R I P T I O N S
//==============================================================================//
// -- 1. Character can choose a Job which he like to be.
// -- 2. This NPC only have 1 Time Usage.
//         If it is set to Account Based then that account can use 1 times.
//         If it is set to Character Based then all new character can use 1 times.
// -- 3. Complete skills / Skill Points will be given if it is set to be.
// -- 4. Base Level and Job Level will be given upon Job Change.
// -- 5. Allow players to click an items to call out the NPC.
//==============================================================================//
//= V E R S I O N S
//==============================================================================//
// -- [ 1.6 ] : Added Item Script which allow the Scripts work as a "Tickets".
// -- [ 1.5 ] : Added Configuration for Account Based / Character Based Settings
// -- [ 1.4 ] : Added Baby Classes + 3rd Job Classes.                            
// -- [ 1.3 ] : Added Configuration Option , 4 Announce Option , Informations.            
// -- [ 1.2 ] : Simplified Scripts + Shorten the Scripts.                            
// -- [ 1.1 ] : Added New Job Change Option.                                    
// -- [ 1.0 ] : Simple Login Auto Max Level + Job Changer.                        
//==============================================================================//
//= R U L E S
//==============================================================================//
// -- 1. Do not use for exchanging purpose.                                        
// -- 2. Do not claim it as yours.                                                
// -- 3. Do not change or remove the credits.
// -- 4. Do not sell the script in order to get paid.
// -- 5. Do not re-sharing upon modified without permission.
//==============================================================================//
 
// -- Add this at item DB. ( Change it to any items to your like. )
// -- 30000,JobClassTicket,JobClassTicket,11,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ doevent "ClassHelper::OnPCLoginEvent"; },{},{}
 
prontera,153,193,5    script    Class Helper    4_F_SHAMAN,{
 
// -- Configuration Option
set .npcname$,"[ ^0000FF Class Helper ^000000 ]";
set .InfoMenu,0;                    // Classes Informations Option [ 0 - Disable / 1 - Enable ]
set .1stClassMenu,1;                // First Job Class Option [ 0 - Disable / 1 - Enable ]
set .2ndClassMenu,1;                // Second Job Class Option [ 0 - Disable / 1 - Enable ]
set .High1stClassMenu,1;            // High 1st Class Option [ 0 - Disable / 1 - Enable ]
set .Trans2ndClassMenu,1;            // Transcendent Class Option [ 0 - Disable / 1 - Enable ]
set .Trans3rdClassMenu,0;            // Third Job Class Option [ 0 - Disable / 1 - Enable ]
set .ExpandedClassMenu,1;            // Expanded Class Option [ 0 - Disable / 1 - Enable ]
set .BabyClassMenu,0;                // Baby Job Class Option [ 0 - Disable / 1 - Enable ]
set .Baby3rdClassMenu,0;            // Baby Third Job Class Option [ 0 - Disable / 1 - Enable ]
set .Allskills,0;                    // Complete Skills Option [ 0 - Disable / 1 - Enable ]
 
// -- Usable for Only 1 Time
set .Based,1;                        // [ 0 - Account Based  / 1 - Character Based ]
 
 
if( ClassHelper == 1 || #ClassHelper == 1 ) end;
 
Main_Menu:
    mes .npcname$;
    mes "I am the Job Class Helper...";
    mes "I am here to help you.";
    mes " ^FF0000________________________________^000000";
    mes "Do you wish to become Stronger ?";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "Do you admire those who have a great power ? Do you wish to become a part of them ? If yes , then which classes that you admire the most ?";
    next;
    switch(select(( .InfoMenu == 0 )?"":"^4EEE94Classes Information^000000",
                ( .1stClassMenu == 0 )?"":"^0000FFFirst Job Classes^000000",
                ( .2ndClassMenu == 0 )?"":"^0000FFSecond Job Classes^000000",    
                ( .High1stClassMenu == 0 )?"":"^0000FFHigh First Job Classes^000000",    
                ( .Trans2ndClassMenu == 0 )?"":"^0000FFTranscendent Job Classes^000000",    
                ( .Trans3rdClassMenu == 0 )?"":"^0000FFThird Job Classes^000000",        
                ( .ExpandedClassMenu == 0 )?"":"^0000FFExpanded Job Classes^000000",    
                ( .BabyClassMenu == 0 )?"":"^0000FFBaby Normal Job Classes^000000",        
                ( .Baby3rdClassMenu == 0 )?"":"^0000FFBaby Third Job Classes^000000",        
                "^FF0000Cancel^000000")) {
 
                    case 1: goto Classes_info;
                    case 2:    goto FirstJob_Classes;
                    case 3:    goto SecondJob_Classes;
                    case 4:    goto HighFirstJob_Classes;
                    case 5:    goto TransSecondJob_Classes;
                    case 6:    goto TransThirdJob_Classes;
                    case 7:    goto ExpandedJob_Classes;
                    case 8:    goto BabyJob_Classes;
                    case 9:    goto BabyThirdJob_Classes;
                    case 10:    close;
            }
    
FirstJob_Classes:
    mes .npcname$;
    mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes.";
    next;
    switch(select("^000000Swordman^000000",
                "^000000Magician^000000",
                "^000000Archer^000000",
                "^000000Acolyte^000000",
                "^000000Merchant^000000",
                "^000000Thief^000000",
                "^FF0000Back^000000")) {
 
// --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>;    
 
            case 1:    callsub Job_Changing,1,99,50,60,"All";
            case 2:    callsub Job_Changing,2,99,50,60,"All";
            case 3:    callsub Job_Changing,3,99,50,60,"All";
            case 4:    callsub Job_Changing,4,99,50,60,"All";
            case 5:    callsub Job_Changing,5,99,50,60,"All";
            case 6:    callsub Job_Changing,6,99,50,60,"All";
            case 7:    goto Main_Menu;
        }
 
HighFirstJob_Classes:
    mes .npcname$;
    mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes.";
    next;
    switch(select("^000000High Swordman^000000",
                "^000000High Magician^000000",
                "^000000High Archer^000000",
                "^000000High Acolyte^000000",
                "^000000High Merchant^000000",
                "^000000High Thief^000000",
                "^FF0000Back^000000")) {
 
// --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>;    
 
            case 1:    callsub Job_Changing,4002,99,50,60,"All";
            case 2:    callsub Job_Changing,4003,99,50,60,"All";
            case 3:    callsub Job_Changing,4004,99,50,60,"All";
            case 4:    callsub Job_Changing,4005,99,50,60,"All";
            case 5:    callsub Job_Changing,4006,99,50,60,"All";
            case 6:    callsub Job_Changing,4007,99,50,60,"All";
            case 7:    goto Main_Menu;
        }
        
SecondJob_Classes:
    mes .npcname$;
    mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes.";
    next;
    switch(select("^000000Knight^000000",
                "^000000Priest^000000",
                "^000000Wizard^000000",
                "^000000Blacksmith^000000",
                "^000000Hunter^000000",
                "^000000Assassin^000000",
                "^000000Crusader^000000",
                "^000000Monk^000000",
                "^000000Sage^000000",
                "^000000Rogue^000000",
                "^000000Alchemist^000000",
                ( Sex == 1 )?"":"^000000Dancer^000000",        
                ( Sex == 0 )?"":"^000000Bard^000000",    
                "^FF0000Back^000000")) {
 
// --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>;    
            
            case 1:    callsub Job_Changing,7,99,50,110,"All";
            case 2:    callsub Job_Changing,8,99,50,110,"All";
            case 3:    callsub Job_Changing,9,99,50,110,"All";
            case 4:    callsub Job_Changing,10,99,50,110,"All";
            case 5:    callsub Job_Changing,11,99,50,110,"All";
            case 6:    callsub Job_Changing,12,99,50,110,"All";
            case 7:    callsub Job_Changing,14,99,50,110,"All";
            case 8:    callsub Job_Changing,15,99,50,110,"All";
            case 9:    callsub Job_Changing,16,99,50,110,"All";
            case 10:    callsub Job_Changing,17,99,50,110,"All";
            case 11:    callsub Job_Changing,18,99,50,110,"All";
            case 12:    callsub Job_Changing,20,99,50,110,"All";
            case 13:    callsub Job_Changing,19,99,50,110,"All";
            case 14:    goto Main_Menu;
        }
 
TransSecondJob_Classes:
    mes .npcname$;
    mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes.";
    next;
    switch(select("^000000Lord Knight^000000",
                "^000000High Priest^000000",
                "^000000High Wizard^000000",
                "^000000Whitesmith^000000",
                "^000000Sniper^000000",
                "^000000Assassin Cross^000000",
                "^000000Paladin^000000",
                "^000000Champion^000000",
                "^000000Professor^000000",
                "^000000Stalker^000000",
                //"^000000Creator^000000",
                ( Sex == 1 )?"":"^000000Gypsy^000000",        
                ( Sex == 0 )?"":"^000000Clown^000000",    
                "^FF0000Back^000000")) {
 
// --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>;    
            
            case 1:    callsub Job_Changing,4008,99,70,130,"All";
            case 2:    callsub Job_Changing,4009,99,70,130,"All";
            case 3:    callsub Job_Changing,4010,99,70,130,"All";
            case 4:    callsub Job_Changing,4011,99,70,130,"All";
            case 5:    callsub Job_Changing,4012,99,70,130,"All";
            case 6:    callsub Job_Changing,4013,99,70,130,"All";
            case 7:    callsub Job_Changing,4015,99,70,130,"All";
            case 8:    callsub Job_Changing,4016,99,70,130,"All";
            case 9:    callsub Job_Changing,4017,99,70,130,"All";
            case 10:    callsub Job_Changing,4018,99,70,130,"All";
            case 11:    callsub Job_Changing,4019,99,70,130,"All";
            case 12:    callsub Job_Changing,4021,99,70,130,"All";
            case 13:    callsub Job_Changing,4020,99,70,130,"All";
            case 14:    goto Main_Menu;
        }
 
TransThirdJob_Classes:
    mes .npcname$;
    mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes.";
    next;
    switch(select("^000000Rune Knight^000000",
                "^000000Warlock^000000",
                "^000000Ranger^000000",
                "^000000Arch Bishop^000000",
                "^000000Mechanic^000000",
                "^000000Guillotine Cross^000000",
                "^000000Royal Guard^000000",
                "^000000Sorcerer^000000",
                ( Sex == 1 )?"":"^000000Wanderer^000000",        
                ( Sex == 0 )?"":"^000000Minstrel^000000",    
                "^000000Shura^000000",
                "^000000Genetic^000000",
                "^000000Shadow Chaser^000000",
                "^FF0000Back^000000")) {
 
// --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>;    
            
            case 1:    callsub Job_Changing,4060,99,70,200,"All";
            case 2:    callsub Job_Changing,4061,99,70,200,"All";
            case 3:    callsub Job_Changing,4062,99,70,200,"All";
            case 4:    callsub Job_Changing,4063,99,70,200,"All";
            case 5:    callsub Job_Changing,4064,99,70,200,"All";
            case 6:    callsub Job_Changing,4065,99,70,200,"All";
            case 7:    callsub Job_Changing,4073,99,70,200,"All";
            case 8:    callsub Job_Changing,4074,99,70,200,"All";
            case 9:    callsub Job_Changing,4076,99,70,200,"All";
            case 10:    callsub Job_Changing,4075,70,70,200,"All";
            case 11:    callsub Job_Changing,4077,70,70,200,"All";
            case 12:    callsub Job_Changing,4078,70,70,200,"All";
            case 13:    callsub Job_Changing,4079,70,70,200,"All";
            case 14:    goto Main_Menu;
        }
                
ExpandedJob_Classes:
    mes .npcname$;
    mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes.";
    next;
    switch(select("^000000Super Novice^000000",
                "^000000Gunslinger^000000",
                "^000000Ninja^000000",
                "^000000Takewon^000000",
                "^000000Star Gladiator^000000",
                "^000000Soul Linker^000000",
                "^FF0000Back^000000")) {
 
// --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>;    
 
            case 1:    callsub Job_Changing,23,99,99,110,"All";
            case 2:    callsub Job_Changing,24,99,50,600,"All";
            case 3:    callsub Job_Changing,25,99,50,60,"All";
            case 4:    callsub Job_Changing,4046,99,50,60,"All";
            case 5:    callsub Job_Changing,4047,99,50,110,"All";
            case 6:    callsub Job_Changing,4049,99,50,110,"All";
            case 7:    goto Main_Menu;
        }
 
BabyJob_Classes:
    mes .npcname$;
    mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes.";
    next;
    switch(select("^000000Baby Swordman^000000",
                "^000000Baby Magician^000000",
                "^000000Baby Archer^000000",
                "^000000Baby Acolyte^000000",
                "^000000Baby Merchant^000000",
                "^000000Baby Thief^000000",
                "^000000Baby Knight^000000",
                "^000000Baby Priest^000000",
                "^000000Baby Wizard^000000",
                "^000000Baby Blacksmith^000000",
                "^000000Baby Hunter^000000",
                "^000000Baby Assassin^000000",
                "^000000Baby Crusader^000000",
                "^000000Baby Monk^000000",
                "^000000Baby Sage^000000",
                "^000000Baby Rogue^000000",
                "^000000Baby Alchemist^000000",
                ( Sex == 1 )?"":"^000000Baby Dancer^000000",        
                ( Sex == 0 )?"":"^000000Baby Bard^000000",    
                "^000000Baby Baby^000000",
                "^FF0000Back^000000")) {
 
// --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>;    
            
            case 1:    callsub Job_Changing,4024,99,50,60,"All";
            case 2:    callsub Job_Changing,4025,99,50,60,"All";
            case 3:    callsub Job_Changing,4026,99,50,60,"All";
            case 4:    callsub Job_Changing,4027,99,50,60,"All";
            case 5:    callsub Job_Changing,4028,99,50,60,"All";
            case 6:    callsub Job_Changing,4029,99,50,60,"All";
            case 7:    callsub Job_Changing,4030,99,50,110,"All";
            case 8:    callsub Job_Changing,4031,99,50,110,"All";
            case 9:    callsub Job_Changing,4032,99,50,110,"All";
            case 10:    callsub Job_Changing,4033,99,50,110,"All";
            case 11:    callsub Job_Changing,4034,99,50,110,"All";
            case 12:    callsub Job_Changing,4035,99,50,110,"All";
            case 13:    callsub Job_Changing,4037,99,50,110,"All";
            case 14:    callsub Job_Changing,4038,99,50,110,"All";
            case 15:    callsub Job_Changing,4039,99,50,110,"All";
            case 16:    callsub Job_Changing,4040,99,50,110,"All";
            case 17:    callsub Job_Changing,4041,99,50,110,"All";
            case 18:    callsub Job_Changing,4043,99,50,110,"All";
            case 19:    callsub Job_Changing,4042,99,50,110,"All";
            case 20:    callsub Job_Changing,4045,99,50,110,"All";
            case 21:    goto Main_Menu;
        }
        
BabyThirdJob_Classes:
    mes .npcname$;
    mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes.";
    next;
    switch(select("^000000Baby Rune Knight^000000",
                "^000000Baby Warlock^000000",
                "^000000Baby Ranger^000000",
                "^000000Baby Arch Bishop^000000",
                "^000000Baby Mechanic^000000",
                "^000000Baby Guillotine Cross^000000",
                "^000000Baby Royal Guard^000000",
                "^000000Baby Sorcerer^000000",
                ( Sex == 0 )?"":"^000000Baby Wanderer^000000",        
                ( Sex == 1 )?"":"^000000Baby Minstrel^000000",    
                "^000000Baby Shura^000000",
                "^000000Baby Genetic^000000",
                "^000000Baby Shadow Chaser^000000",
                "^FF0000Back^000000")) {
 
// --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>;    
            
            case 1:    callsub Job_Changing,4096,99,70,200,"All";
            case 2:    callsub Job_Changing,4097,99,70,200,"All";
            case 3:    callsub Job_Changing,4098,99,70,200,"All";
            case 4:    callsub Job_Changing,4099,99,70,200,"All";
            case 5:    callsub Job_Changing,4100,99,70,200,"All";
            case 6:    callsub Job_Changing,4101,99,70,200,"All";
            case 7:    callsub Job_Changing,4102,99,70,200,"All";
            case 8:    callsub Job_Changing,4103,99,70,200,"All";
            case 9:    callsub Job_Changing,4105,99,70,200,"All";
            case 10:    callsub Job_Changing,4104,99,70,200,"All";
            case 11:    callsub Job_Changing,4106,99,70,200,"All";
            case 12:    callsub Job_Changing,4107,99,70,200,"All";
            case 13:    callsub Job_Changing,4108,99,70,200,"All";
            case 14:    goto Main_Menu;
        }
 
Job_Changing:
        mes .npcname$;
        mes "You are now a part of ^FF0000"+jobname(getarg(0))+"^000000.";
        if (compare(getarg(4),"All")){    announce "[ "+strcharinfo(0)+" ] has changed to [ "+jobname(getarg(0))+" ].",bc_all,0x76EE00;    }
        if (compare(getarg(4),"Map")){    announce "[ "+strcharinfo(0)+" ] has changed to [ "+jobname(getarg(0))+" ].",bc_map,0x76EE00;    }
        if (compare(getarg(4),"Area")){    announce "[ "+strcharinfo(0)+" ] has changed to [ "+jobname(getarg(0))+" ].",bc_area,0x76EE00;    }
        if (compare(getarg(4),"Self")){    announce "[ "+strcharinfo(0)+" ] has changed to [ "+jobname(getarg(0))+" ].",bc_self,0x76EE00;    }
        jobchange getarg(0);
        set BaseLevel,getarg(1);
        set JobLevel,getarg(2);
        resetskill;
        resetstatus;
        //set SkillPoint,getarg(3);
        if ( .Allskills == 1 ){
            atcommand "@allskills";
            set SkillPoint,0;
        }
        percentheal 100,100;
        if ( .Based == 0 ){    set #ClassHelper,1;    }
        if ( .Based == 1 ){    set ClassHelper,1;    }
        //warp "prontera",0,0;
        close;
    
Classes_info:
    mes .npcname$;
    mes "=====[^000000 Swordman Classes ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "Enthusiastic skills in sword fighting is a definite attraction to all teenagers. Easy to control and master character enables most players to be a great player.";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Archer Classes ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "Long ranged attack ability and special techniques of archers in defeating enemy often lure players to try this.";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Mage Classes ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "Fascinating element techniques involvement of nature in its abilities is truly amazing with their series of undefeatable magics.";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Thief Classes ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "Poisoning and dodging abilities will defeat most of the enemy. Maximum defensive and offensive ability caused this character to fearsome one.";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Acolyte Classes ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "A supportive character, most of the skills like helping will benefit to teammates who lead to teammates act like a terminator.";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Merchant Classes ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "Involving communication with other players that emphasizes on battles, intelligence in business dealing. His versatility made him must not be look down.";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Super Novice ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "A job who are Advanced after Novice Class. It look alike like a Novice but it is not. Beside that, it can learn most of the skills for all 1st Job Class.";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Gunslinger ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "The only Job class in RO who are using Gun as weapon. If are you a Gun Lover , there is no doubt you will choose this Job.";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Ninja ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "A mysterious Job Class , who alway processing Ancient Spells , look alike with Mage but not mage , good in PK , can evade very well during PK.";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Taekwon ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "Just like the name has mentioned. The only class in RO who are not using any Weapon. Attack enemy using barehand and foots. ";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Star Gladiator ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "A class who can use the power of the Sun / Star / Moon. By processing the power of Universe to gain a stronger Power.";
    mes " ^FF0000________________________________^000000";
    next;
    mes .npcname$;
    mes "=====[^000000 Soul Linker ^000000]=====";
    mes " ^FF0000________________________________^000000";
    mes "^4EEE94Description :^000000";
    mes "Class that work like a Shaman, who able to recalling the soul of the dead from the underworld to Boost other class ability.";
    mes " ^FF0000________________________________^000000";
    next;
    goto Main_Menu;
}
 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  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.

Loading...

×
×
  • Create New...

Important Information

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