Jump to content
  • 0
Geralt

jobmaster Soul Reaper & Star Emperor

Question

How to add Soul Reaper and Star Emperor classes and platinum skills

//===== rAthena Script =======================================
//= Job Master
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.4
//===== Compatible With: ===================================== 
//= rAthena Project
//===== Description: =========================================
//= A fully functional job changer.
//===== Additional Comments: =================================
//= 1.0 Initial script.
//= 1.1 Fixed reset on Baby job change.
//= 1.2 Added Expanded Super Novice support and initial Kagerou/Oboro support.
//= 1.3 Kagerou/Oboro added.
//= 1.4 Rebellion added.
//============================================================
prontera,153,193,4    script    Mestra das Classes    484,{
function Job_Menu;
    mes "^339966[ Mestra das Classes ]^000000";
    if (Class > 4049) {
        mes (gettime(3)>= 6&&gettime(3)<= 12?"Bom-dia":(gettime(3)>=13&&gettime(3)<=18?"Boa-tarde":"Boa-noite"))+", ^008aff"+strcharinfo(0)+"^000000 !";
        mes "Não há mais nada que eu possa fazer por você.";
        close;
    }
    if (checkfalcon() || checkcart() || checkriding() || ismounting()) {
        mes "Por favor você deve remover "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" para poder continuar.";
        close;
    }
    if (.SkillPointCheck && SkillPoint) {
        mes "Por favor use todos os pontos de skill para poder continuar..";
        close;
    }
    set [email protected], eaclass();
    set [email protected], ((.ThirdClass)?roclass([email protected]&EAJ_UPPERMASK):Class);
    if ([email protected] > 6 && [email protected] < 22) {
        if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) {
            set [email protected], .Rebirth[0]-BaseLevel; set [email protected], .Rebirth[1]-JobLevel;
            mes "Você precisa de "+(([email protected]>0)[email protected]+" niveis de base "+(([email protected]>0)?"/ ":""):"")+(([email protected]>0)[email protected]+" niveis de job ":"")+"para continuar.";
            close;
        }
        if (Class > 21) {
            mes "Você deseja se tornar 3rd Classe?";
            next;
            Job_Menu(roclass([email protected]|EAJL_THIRD));
            close;
        }
        while(1) {
            mes "Selecione a opção:";
            next;
            set [email protected], select(" ^3CB371[»]^000000 ^0055FFRenascer^000000:"+((.ThirdClass)?" [»] ^FF0000Terceira Classe^000000":"")+": ^777777[»] Cancelar^000000");
            if ([email protected]==3) close;
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você tem certeza?";
            next;
            Job_Menu((([email protected]==1)?4001:roclass([email protected]|EAJL_THIRD)));
            mes "^339966[ Mestra das Classes ]^000000";
        }
    }
    set [email protected], roclass([email protected]|EAJL_2_1); set [email protected],roclass([email protected]|EAJL_2_2);
    if (([email protected]&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray [email protected][0],roclass([email protected]|EAJL_THIRD),99;
    //if (Class == Job_Ninja || Class == Job_Gunslinger) setarray [email protected][0],[email protected],70;
    if ([email protected][0] && .SecondExpanded) {
        if (BaseLevel < .Rebirth[0] || JobLevel < [email protected][1]) {
            set [email protected], .Rebirth[0]-BaseLevel; set [email protected], [email protected][1]-JobLevel;
            mes "Você precisa de "+(([email protected]>0)[email protected]+" niveis de base "+(([email protected]>0)?"/ ":""):"")+(([email protected]>0)[email protected]+" niveis de job ":"")+"para continuar.";
            close;
        }
        mes "Trocar para "+jobname([email protected][0])+"?";
        next;
        Job_Menu([email protected][0]);
        close;
    }
    if ([email protected]&EAJL_2)
        if ([email protected]&(EAJL_UPPER|EAJL_BABY) || roclass([email protected]|EAJL_UPPER) == -1) {
            mes "Não há mais classes disponiveis.";
            close;
        }
    if (([email protected]&EAJ_BASEMASK) == EAJ_NOVICE) {
        if (JobLevel < .JobReq[0])
            mes "É necessário o nivel de job "+.JobReq[0]+" para se tornar 1ª Classe.";
        else if (Class == 4001 && .LastJob && lastJob) {
            mes "Trocar de classe agora?";
            next;
            Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
        } else switch(Class) {
            case 0: Job_Menu(1,2,3,4,5,6,23,4046,24,25,4023);
            case 4001: Job_Menu(4002,4003,4004,4005,4006,4007);
            case 4023: Job_Menu(4024,4025,4026,4027,4028,4029,4045);
            default: mes "An error has occurred."; break;
        }
        close;
    }
    if (roclass([email protected]|EAJL_2_1) == -1 || roclass([email protected]|EAJL_2_2) == -1)
        mes "Não há mais classes disponiveis.";
    else if (!([email protected]&EAJL_2) && JobLevel < .JobReq[1])
        mes "É necessário o nivel de job "+.JobReq[1]+" para se tornar 2ª Classe.";
    else if (.LastJob && lastJob && ([email protected]&EAJL_UPPER)) {
        mes "Trocar de classe agora?";
        next;
        Job_Menu(lastJob+4001);
    } else
        Job_Menu([email protected],[email protected]);
    close;
function Job_Menu {
    while(1) {
        if (getargcount() > 1) {
            mes "Escolha uma profissão";
            set [email protected]$,"";
            for(set [email protected],0; [email protected]<getargcount(); set [email protected],[email protected]+1)
                set [email protected]$, [email protected]$+" ^3CB371[»]^000000 "+jobname(getarg([email protected]))+":";
            set [email protected]$, [email protected]$+" ^777777[»] Cancelar^000000";
            next;
            set [email protected], getarg(select([email protected]$)-1,0);
            if ([email protected]) close;
            if (([email protected] == 23 || [email protected] == 4045) && BaseLevel < .SNovice) {
                mes "^339966[ Mestra das Classes ]^000000";
                mes "É necessário o nivel de base "+.SNovice+" para se tornar um "+jobname([email protected])+".";
                close;
            }
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você tem certeza?";
            next;
        } else
            set [email protected], getarg(0);
        if (select(" ^3CB371[»]^000000 Trocar sua classe para ^0055FF"+jobname([email protected])+"^000000: ^777777[»] "+((getargcount() > 1)?"Voltar":"Cancelar")+"^000000") == 1) {
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você é agora um: "+callfunc("F_InsertArticle",jobname([email protected]))+"!";
            if ([email protected]==4001 && .LastJob) set lastJob, Class;
            jobchange [email protected];
            if ([email protected]==4001 || [email protected]==4023) resetlvl(1);
            specialeffect2 EF_ANGEL2; specialeffect2 EF_ELECTRIC;
            if (.Platinum) callsub Get_Platinum;
            close;
        }
        if (getargcount() == 1) return;
        mes "^339966[ Mestra das Classes ]^000000";
    }
    end;
}
Get_Platinum:
    skill 142,1,0;
    switch(BaseClass) {
        case 0: if (Class !=23) skill 143,1,0; break;
        case 1: skill 144,1,0; skill 145,1,0; skill 146,1,0; break;
        case 2: skill 157,1,0; break;
        case 3: skill 147,1,0; skill 148,1,0; break;
        case 4: skill 156,1,0; break;
        case 5: skill 153,1,0; skill 154,1,0; skill 155,1,0; break;
        case 6: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break;
        default: break;
    }
    switch(BaseJob) {
        case 7: skill 1001,1,0; break;
        case 8: skill 1014,1,0; break;
        case 9: skill 1006,1,0; break;
        case 10: skill 1012,1,0; skill 1013,1,0; break;
        case 11: skill 1009,1,0; break;
        case 12: skill 1003,1,0; skill 1004,1,0; break;
        case 14: skill 1002,1,0; break;
        case 15: skill 1015,1,0; skill 1016,1,0; break;
        case 16: skill 1007,1,0; skill 1008,1,0; skill 1017,1,0; skill 1018,1,0; skill 1019,1,0; break;
        case 17: skill 1005,1,0; break;
        case 18: skill 238,1,0; break;
        case 19: skill 1010,1,0; break;
        case 20: skill 1011,1,0; break;
        default: break;
    }
    return;
OnInit:
    setarray .Rebirth[0],99,50;    // Minimum base level, job level to rebirth OR change to third class
    setarray .JobReq[0],10,40;    // Minimum job level to turn into 1st class, 2nd class
    set .ThirdClass,0;        // Enable third classes? (1: yes / 0: no)
    set .SecondExpanded,0;        // Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion? (1: yes / 0: no)
    set .SNovice,45;        // Minimum base level to turn into Super Novice
    set .LastJob,1;            // Enforce linear class changes? (1: yes / 0: no)
    set .SkillPointCheck,1;        // Force player to use up all skill points? (1: yes / 0: no)
    set .Platinum,1;        // Get platinum skills automatically? (1: yes / 0: no)
    end;
}


//prontera,151,193,4    script    Removedor de Skills    872,{
//-    script    Removedor de Skills    -1,{
////--
//set .nome$,"^339966[ Removedor de Skill ]^000000"; //Nome do NPC
////--
//mes .nome$;
//mes (gettime(3)>= 6&&gettime(3)<= 12?"Bom-dia":(gettime(3)>=13&&gettime(3)<=18?"Boa-tarde":"Boa-noite"))+", ^008aff"+strcharinfo(0)+"^000000 !";
//mes "Eu posso remover seus pontos de skill que estão sobrando.";
//mes "Vou verificar quantos pontos de skill você tem.";
//next;
//mes .nome$;
//set @skillPoints, skillPointCount();
//mes "Você tem "[email protected]+" Pontos de Habilidade!";
//next;
//mes .nome$;
//mes "^ff0000CUIDADO! Você só deve remover os pontos se realmente os mesmo estiverem sobrando. Antes de continuar, tente atualizar seu patch, se mesmo assim ainda existe pontos sobrando continue com o processo.^000000";
//next;
//mes .nome$;
//mes "Deseja remover "[email protected]+" Pontos de Habilidade?";
//if(select("^3CB371[»]^000000 Sim.:^ff0000[»]^000000 Nao") == 2) close;
//mes .nome$;
//mes "Então eu removerei seus pontos!";
//next;
//set SkillPoint,0;
//mes "Seus ^FF0000Pontos de Habilidade^000000 foram removidos com sucesso.";
//close;
//}

 

Edited by Patskie
codebox
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0
16 hours ago, Geralt said:

How to add Soul Reaper and Star Emperor classes and platinum skills

//===== rAthena Script =======================================
//= Job Master
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.4
//===== Compatible With: ===================================== 
//= rAthena Project
//===== Description: =========================================
//= A fully functional job changer.
//===== Additional Comments: =================================
//= 1.0 Initial script.
//= 1.1 Fixed reset on Baby job change.
//= 1.2 Added Expanded Super Novice support and initial Kagerou/Oboro support.
//= 1.3 Kagerou/Oboro added.
//= 1.4 Rebellion added.
//============================================================
prontera,153,193,4    script    Mestra das Classes    484,{
function Job_Menu;
    mes "^339966[ Mestra das Classes ]^000000";
    if (Class > 4049) {
        mes (gettime(3)>= 6&&gettime(3)<= 12?"Bom-dia":(gettime(3)>=13&&gettime(3)<=18?"Boa-tarde":"Boa-noite"))+", ^008aff"+strcharinfo(0)+"^000000 !";
        mes "Não há mais nada que eu possa fazer por você.";
        close;
    }
    if (checkfalcon() || checkcart() || checkriding() || ismounting()) {
        mes "Por favor você deve remover "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" para poder continuar.";
        close;
    }
    if (.SkillPointCheck && SkillPoint) {
        mes "Por favor use todos os pontos de skill para poder continuar..";
        close;
    }
    set [email protected], eaclass();
    set [email protected], ((.ThirdClass)?roclass([email protected]&EAJ_UPPERMASK):Class);
    if ([email protected] > 6 && [email protected] < 22) {
        if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) {
            set [email protected], .Rebirth[0]-BaseLevel; set [email protected], .Rebirth[1]-JobLevel;
            mes "Você precisa de "+(([email protected]>0)[email protected]+" niveis de base "+(([email protected]>0)?"/ ":""):"")+(([email protected]>0)[email protected]+" niveis de job ":"")+"para continuar.";
            close;
        }
        if (Class > 21) {
            mes "Você deseja se tornar 3rd Classe?";
            next;
            Job_Menu(roclass([email protected]|EAJL_THIRD));
            close;
        }
        while(1) {
            mes "Selecione a opção:";
            next;
            set [email protected], select(" ^3CB371[»]^000000 ^0055FFRenascer^000000:"+((.ThirdClass)?" [»] ^FF0000Terceira Classe^000000":"")+": ^777777[»] Cancelar^000000");
            if ([email protected]==3) close;
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você tem certeza?";
            next;
            Job_Menu((([email protected]==1)?4001:roclass([email protected]|EAJL_THIRD)));
            mes "^339966[ Mestra das Classes ]^000000";
        }
    }
    set [email protected], roclass([email protected]|EAJL_2_1); set [email protected],roclass([email protected]|EAJL_2_2);
    if (([email protected]&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray [email protected][0],roclass([email protected]|EAJL_THIRD),99;
    //if (Class == Job_Ninja || Class == Job_Gunslinger) setarray [email protected][0],[email protected],70;
    if ([email protected][0] && .SecondExpanded) {
        if (BaseLevel < .Rebirth[0] || JobLevel < [email protected][1]) {
            set [email protected], .Rebirth[0]-BaseLevel; set [email protected], [email protected][1]-JobLevel;
            mes "Você precisa de "+(([email protected]>0)[email protected]+" niveis de base "+(([email protected]>0)?"/ ":""):"")+(([email protected]>0)[email protected]+" niveis de job ":"")+"para continuar.";
            close;
        }
        mes "Trocar para "+jobname([email protected][0])+"?";
        next;
        Job_Menu([email protected][0]);
        close;
    }
    if ([email protected]&EAJL_2)
        if ([email protected]&(EAJL_UPPER|EAJL_BABY) || roclass([email protected]|EAJL_UPPER) == -1) {
            mes "Não há mais classes disponiveis.";
            close;
        }
    if (([email protected]&EAJ_BASEMASK) == EAJ_NOVICE) {
        if (JobLevel < .JobReq[0])
            mes "É necessário o nivel de job "+.JobReq[0]+" para se tornar 1ª Classe.";
        else if (Class == 4001 && .LastJob && lastJob) {
            mes "Trocar de classe agora?";
            next;
            Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
        } else switch(Class) {
            case 0: Job_Menu(1,2,3,4,5,6,23,4046,24,25,4023);
            case 4001: Job_Menu(4002,4003,4004,4005,4006,4007);
            case 4023: Job_Menu(4024,4025,4026,4027,4028,4029,4045);
            default: mes "An error has occurred."; break;
        }
        close;
    }
    if (roclass([email protected]|EAJL_2_1) == -1 || roclass([email protected]|EAJL_2_2) == -1)
        mes "Não há mais classes disponiveis.";
    else if (!([email protected]&EAJL_2) && JobLevel < .JobReq[1])
        mes "É necessário o nivel de job "+.JobReq[1]+" para se tornar 2ª Classe.";
    else if (.LastJob && lastJob && ([email protected]&EAJL_UPPER)) {
        mes "Trocar de classe agora?";
        next;
        Job_Menu(lastJob+4001);
    } else
        Job_Menu([email protected],[email protected]);
    close;
function Job_Menu {
    while(1) {
        if (getargcount() > 1) {
            mes "Escolha uma profissão";
            set [email protected]$,"";
            for(set [email protected],0; [email protected]<getargcount(); set [email protected],[email protected]+1)
                set [email protected]$, [email protected]$+" ^3CB371[»]^000000 "+jobname(getarg([email protected]))+":";
            set [email protected]$, [email protected]$+" ^777777[»] Cancelar^000000";
            next;
            set [email protected], getarg(select([email protected]$)-1,0);
            if ([email protected]) close;
            if (([email protected] == 23 || [email protected] == 4045) && BaseLevel < .SNovice) {
                mes "^339966[ Mestra das Classes ]^000000";
                mes "É necessário o nivel de base "+.SNovice+" para se tornar um "+jobname([email protected])+".";
                close;
            }
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você tem certeza?";
            next;
        } else
            set [email protected], getarg(0);
        if (select(" ^3CB371[»]^000000 Trocar sua classe para ^0055FF"+jobname([email protected])+"^000000: ^777777[»] "+((getargcount() > 1)?"Voltar":"Cancelar")+"^000000") == 1) {
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você é agora um: "+callfunc("F_InsertArticle",jobname([email protected]))+"!";
            if ([email protected]==4001 && .LastJob) set lastJob, Class;
            jobchange [email protected];
            if ([email protected]==4001 || [email protected]==4023) resetlvl(1);
            specialeffect2 EF_ANGEL2; specialeffect2 EF_ELECTRIC;
            if (.Platinum) callsub Get_Platinum;
            close;
        }
        if (getargcount() == 1) return;
        mes "^339966[ Mestra das Classes ]^000000";
    }
    end;
}
Get_Platinum:
    skill 142,1,0;
    switch(BaseClass) {
        case 0: if (Class !=23) skill 143,1,0; break;
        case 1: skill 144,1,0; skill 145,1,0; skill 146,1,0; break;
        case 2: skill 157,1,0; break;
        case 3: skill 147,1,0; skill 148,1,0; break;
        case 4: skill 156,1,0; break;
        case 5: skill 153,1,0; skill 154,1,0; skill 155,1,0; break;
        case 6: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break;
        default: break;
    }
    switch(BaseJob) {
        case 7: skill 1001,1,0; break;
        case 8: skill 1014,1,0; break;
        case 9: skill 1006,1,0; break;
        case 10: skill 1012,1,0; skill 1013,1,0; break;
        case 11: skill 1009,1,0; break;
        case 12: skill 1003,1,0; skill 1004,1,0; break;
        case 14: skill 1002,1,0; break;
        case 15: skill 1015,1,0; skill 1016,1,0; break;
        case 16: skill 1007,1,0; skill 1008,1,0; skill 1017,1,0; skill 1018,1,0; skill 1019,1,0; break;
        case 17: skill 1005,1,0; break;
        case 18: skill 238,1,0; break;
        case 19: skill 1010,1,0; break;
        case 20: skill 1011,1,0; break;
        default: break;
    }
    return;
OnInit:
    setarray .Rebirth[0],99,50;    // Minimum base level, job level to rebirth OR change to third class
    setarray .JobReq[0],10,40;    // Minimum job level to turn into 1st class, 2nd class
    set .ThirdClass,0;        // Enable third classes? (1: yes / 0: no)
    set .SecondExpanded,0;        // Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion? (1: yes / 0: no)
    set .SNovice,45;        // Minimum base level to turn into Super Novice
    set .LastJob,1;            // Enforce linear class changes? (1: yes / 0: no)
    set .SkillPointCheck,1;        // Force player to use up all skill points? (1: yes / 0: no)
    set .Platinum,1;        // Get platinum skills automatically? (1: yes / 0: no)
    end;
}


//prontera,151,193,4    script    Removedor de Skills    872,{
//-    script    Removedor de Skills    -1,{
////--
//set .nome$,"^339966[ Removedor de Skill ]^000000"; //Nome do NPC
////--
//mes .nome$;
//mes (gettime(3)>= 6&&gettime(3)<= 12?"Bom-dia":(gettime(3)>=13&&gettime(3)<=18?"Boa-tarde":"Boa-noite"))+", ^008aff"+strcharinfo(0)+"^000000 !";
//mes "Eu posso remover seus pontos de skill que estão sobrando.";
//mes "Vou verificar quantos pontos de skill você tem.";
//next;
//mes .nome$;
//set @skillPoints, skillPointCount();
//mes "Você tem "[email protected]+" Pontos de Habilidade!";
//next;
//mes .nome$;
//mes "^ff0000CUIDADO! Você só deve remover os pontos se realmente os mesmo estiverem sobrando. Antes de continuar, tente atualizar seu patch, se mesmo assim ainda existe pontos sobrando continue com o processo.^000000";
//next;
//mes .nome$;
//mes "Deseja remover "[email protected]+" Pontos de Habilidade?";
//if(select("^3CB371[»]^000000 Sim.:^ff0000[»]^000000 Nao") == 2) close;
//mes .nome$;
//mes "Então eu removerei seus pontos!";
//next;
//set SkillPoint,0;
//mes "Seus ^FF0000Pontos de Habilidade^000000 foram removidos com sucesso.";
//close;
//}

 

https://rathena.org/board/topic/121679-jobmaster-with-soul-reaper-star-emperor/

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...

Important Information

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