Jump to content
  • 0

jobmaster Soul Reaper & Star Emperor


Geralt

Question


  • Group:  Members
  • Topic Count:  61
  • Topics Per Day:  0.01
  • Content Count:  108
  • Reputation:   0
  • Joined:  12/26/12
  • Last Seen:  

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 .@eac, eaclass();
    set .@i, ((.ThirdClass)?roclass(.@eac&EAJ_UPPERMASK):Class);
    if (.@i > 6 && .@i < 22) {
        if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) {
            set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .Rebirth[1]-JobLevel;
            mes "Você precisa de "+((.@blvl>0)?.@blvl+" niveis de base "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" niveis de job ":"")+"para continuar.";
            close;
        }
        if (Class > 21) {
            mes "Você deseja se tornar 3rd Classe?";
            next;
            Job_Menu(roclass(.@eac|EAJL_THIRD));
            close;
        }
        while(1) {
            mes "Selecione a opção:";
            next;
            set .@i, select(" ^3CB371[»]^000000 ^0055FFRenascer^000000:"+((.ThirdClass)?" [»] ^FF0000Terceira Classe^000000":"")+": ^777777[»] Cancelar^000000");
            if (.@i==3) close;
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você tem certeza?";
            next;
            Job_Menu(((.@i==1)?4001:roclass(.@eac|EAJL_THIRD)));
            mes "^339966[ Mestra das Classes ]^000000";
        }
    }
    set .@j1, roclass(.@eac|EAJL_2_1); set .@j2,roclass(.@eac|EAJL_2_2);
    if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray .@exp[0],roclass(.@eac|EAJL_THIRD),99;
    //if (Class == Job_Ninja || Class == Job_Gunslinger) setarray .@exp[0],.@j1,70;
    if (.@exp[0] && .SecondExpanded) {
        if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) {
            set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .@exp[1]-JobLevel;
            mes "Você precisa de "+((.@blvl>0)?.@blvl+" niveis de base "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" niveis de job ":"")+"para continuar.";
            close;
        }
        mes "Trocar para "+jobname(.@exp[0])+"?";
        next;
        Job_Menu(.@exp[0]);
        close;
    }
    if (.@eac&EAJL_2)
        if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) {
            mes "Não há mais classes disponiveis.";
            close;
        }
    if ((.@eac&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(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1)
        mes "Não há mais classes disponiveis.";
    else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1])
        mes "É necessário o nivel de job "+.JobReq[1]+" para se tornar 2ª Classe.";
    else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) {
        mes "Trocar de classe agora?";
        next;
        Job_Menu(lastJob+4001);
    } else
        Job_Menu(.@j1,.@j2);
    close;
function Job_Menu {
    while(1) {
        if (getargcount() > 1) {
            mes "Escolha uma profissão";
            set .@menu$,"";
            for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
                set .@menu$, .@menu$+" ^3CB371[»]^000000 "+jobname(getarg(.@i))+":";
            set .@menu$, .@menu$+" ^777777[»] Cancelar^000000";
            next;
            set .@i, getarg(select(.@menu$)-1,0);
            if (!.@i) close;
            if ((.@i == 23 || .@i == 4045) && BaseLevel < .SNovice) {
                mes "^339966[ Mestra das Classes ]^000000";
                mes "É necessário o nivel de base "+.SNovice+" para se tornar um "+jobname(.@i)+".";
                close;
            }
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você tem certeza?";
            next;
        } else
            set .@i, getarg(0);
        if (select(" ^3CB371[»]^000000 Trocar sua classe para ^0055FF"+jobname(.@i)+"^000000: ^777777[»] "+((getargcount() > 1)?"Voltar":"Cancelar")+"^000000") == 1) {
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você é agora um: "+callfunc("F_InsertArticle",jobname(.@i))+"!";
            if (.@i==4001 && .LastJob) set lastJob, Class;
            jobchange .@i;
            if (.@i==4001 || .@i==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 "+@skillPoints+" 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 "+@skillPoints+" 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

  • Group:  Forum Moderator
  • Topic Count:  25
  • Topics Per Day:  0.01
  • Content Count:  832
  • Reputation:   317
  • Joined:  02/11/19
  • Last Seen:  

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 .@eac, eaclass();
    set .@i, ((.ThirdClass)?roclass(.@eac&EAJ_UPPERMASK):Class);
    if (.@i > 6 && .@i < 22) {
        if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) {
            set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .Rebirth[1]-JobLevel;
            mes "Você precisa de "+((.@blvl>0)?.@blvl+" niveis de base "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" niveis de job ":"")+"para continuar.";
            close;
        }
        if (Class > 21) {
            mes "Você deseja se tornar 3rd Classe?";
            next;
            Job_Menu(roclass(.@eac|EAJL_THIRD));
            close;
        }
        while(1) {
            mes "Selecione a opção:";
            next;
            set .@i, select(" ^3CB371[»]^000000 ^0055FFRenascer^000000:"+((.ThirdClass)?" [»] ^FF0000Terceira Classe^000000":"")+": ^777777[»] Cancelar^000000");
            if (.@i==3) close;
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você tem certeza?";
            next;
            Job_Menu(((.@i==1)?4001:roclass(.@eac|EAJL_THIRD)));
            mes "^339966[ Mestra das Classes ]^000000";
        }
    }
    set .@j1, roclass(.@eac|EAJL_2_1); set .@j2,roclass(.@eac|EAJL_2_2);
    if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray .@exp[0],roclass(.@eac|EAJL_THIRD),99;
    //if (Class == Job_Ninja || Class == Job_Gunslinger) setarray .@exp[0],.@j1,70;
    if (.@exp[0] && .SecondExpanded) {
        if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) {
            set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .@exp[1]-JobLevel;
            mes "Você precisa de "+((.@blvl>0)?.@blvl+" niveis de base "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" niveis de job ":"")+"para continuar.";
            close;
        }
        mes "Trocar para "+jobname(.@exp[0])+"?";
        next;
        Job_Menu(.@exp[0]);
        close;
    }
    if (.@eac&EAJL_2)
        if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) {
            mes "Não há mais classes disponiveis.";
            close;
        }
    if ((.@eac&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(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1)
        mes "Não há mais classes disponiveis.";
    else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1])
        mes "É necessário o nivel de job "+.JobReq[1]+" para se tornar 2ª Classe.";
    else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) {
        mes "Trocar de classe agora?";
        next;
        Job_Menu(lastJob+4001);
    } else
        Job_Menu(.@j1,.@j2);
    close;
function Job_Menu {
    while(1) {
        if (getargcount() > 1) {
            mes "Escolha uma profissão";
            set .@menu$,"";
            for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
                set .@menu$, .@menu$+" ^3CB371[»]^000000 "+jobname(getarg(.@i))+":";
            set .@menu$, .@menu$+" ^777777[»] Cancelar^000000";
            next;
            set .@i, getarg(select(.@menu$)-1,0);
            if (!.@i) close;
            if ((.@i == 23 || .@i == 4045) && BaseLevel < .SNovice) {
                mes "^339966[ Mestra das Classes ]^000000";
                mes "É necessário o nivel de base "+.SNovice+" para se tornar um "+jobname(.@i)+".";
                close;
            }
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você tem certeza?";
            next;
        } else
            set .@i, getarg(0);
        if (select(" ^3CB371[»]^000000 Trocar sua classe para ^0055FF"+jobname(.@i)+"^000000: ^777777[»] "+((getargcount() > 1)?"Voltar":"Cancelar")+"^000000") == 1) {
            mes "^339966[ Mestra das Classes ]^000000";
            mes "Você é agora um: "+callfunc("F_InsertArticle",jobname(.@i))+"!";
            if (.@i==4001 && .LastJob) set lastJob, Class;
            jobchange .@i;
            if (.@i==4001 || .@i==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 "+@skillPoints+" 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 "+@skillPoints+" 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...