//===== 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.
//============================================================
trinity,99,154,5 script Job Master 635,{
function Job_Menu;
mes "[Job Master]";
if (Class > 4049) {
mes "No more jobs are available.";
close;
}
if (checkfalcon() || checkcart() || checkriding() || ismounting()) {
mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" before proceeding.";
close;
}
if (.SkillPointCheck && SkillPoint) {
mes "Please use all your skill points before proceeding.";
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 "You need "+(([email protected]>0)[email protected]+" more base levels "+(([email protected]>0)?"/ ":""):"")+(([email protected]>0)[email protected]+" more job levels ":"")+"to continue.";
close;
}
if (Class > 21) {
mes "Switch to third class?";
next;
Job_Menu(roclass([email protected]|EAJL_THIRD));
close;
}
while(1) {
mes "Select an option.";
next;
set [email protected], select(" ~ ^0055FFRebirth^000000:"+((.ThirdClass)?" ~ ^FF0000Third Class^000000":"")+": ~ ^777777Cancel^000000");
if ([email protected]==3) close;
mes "[Job Master]";
mes "Are you sure?";
next;
Job_Menu((([email protected]==1)?4001:roclass([email protected]|EAJL_THIRD)));
mes "[Job Master]";
}
}
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 "You need "+(([email protected]>0)[email protected]+" more base levels "+(([email protected]>0)?"/ ":""):"")+(([email protected]>0)[email protected]+" more job levels ":"")+"to continue.";
close;
}
mes "Switch to "+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 "No more jobs are available.";
close;
}
if (([email protected]&EAJ_BASEMASK) == EAJ_NOVICE) {
if (JobLevel < .JobReq[0])
mes "A job level of "+.JobReq[0]+" is required to change into the 1st Class.";
else if (Class == 4001 && .LastJob && lastJob) {
mes "Switch classes now?";
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 "No more jobs are available.";
else if (!([email protected]&EAJL_2) && JobLevel < .JobReq[1])
mes "A job level of "+.JobReq[1]+" is required to change into the 2nd Class.";
else if (.LastJob && lastJob && ([email protected]&EAJL_UPPER)) {
mes "Switch classes now?";
next;
Job_Menu(lastJob+4001);
} else
Job_Menu([email protected],[email protected]);
close;
function Job_Menu {
while(1) {
if (getargcount() > 1) {
mes "Select a job.";
set [email protected]$,"";
for(set [email protected],0; [email protected]<getargcount(); set [email protected],[email protected]+1)
set [email protected]$, [email protected]$+" ~ "+jobname(getarg([email protected]))+":";
set [email protected]$, [email protected]$+" ~ ^777777Cancel^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 "[Job Master]";
mes "A base level of "+.SNovice+" is required to turn into a "+jobname([email protected])+".";
close;
}
mes "[Job Master]";
mes "Are you sure?";
next;
} else
set [email protected], getarg(0);
if (select(" ~ Change into ^0055FF"+jobname([email protected])+"^000000 class: ~ ^777777"+((getargcount() > 1)?"Go back":"Cancel")+"^000000") == 1) {
mes "[Job Master]";
mes "You are now "+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 "[Job Master]";
}
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,10; // 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,0; // Get platinum skills automatically? (1: yes / 0: no)
end;
}
What I want is each time they change a job for example from Novice changing to Swordsman then he/she will receive a +10 Blade[4] bounded to his/her account. then Swordsman to Knight receive another weapon. that's all i hope someone can help me out with this thanks!
Hello rAthena, I have a request for you guys!
Here's the script :
//===== 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. //============================================================ trinity,99,154,5 script Job Master 635,{ function Job_Menu; mes "[Job Master]"; if (Class > 4049) { mes "No more jobs are available."; close; } if (checkfalcon() || checkcart() || checkriding() || ismounting()) { mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" before proceeding."; close; } if (.SkillPointCheck && SkillPoint) { mes "Please use all your skill points before proceeding."; 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 "You need "+(([email protected]>0)[email protected]+" more base levels "+(([email protected]>0)?"/ ":""):"")+(([email protected]>0)[email protected]+" more job levels ":"")+"to continue."; close; } if (Class > 21) { mes "Switch to third class?"; next; Job_Menu(roclass([email protected]|EAJL_THIRD)); close; } while(1) { mes "Select an option."; next; set [email protected], select(" ~ ^0055FFRebirth^000000:"+((.ThirdClass)?" ~ ^FF0000Third Class^000000":"")+": ~ ^777777Cancel^000000"); if ([email protected]==3) close; mes "[Job Master]"; mes "Are you sure?"; next; Job_Menu((([email protected]==1)?4001:roclass([email protected]|EAJL_THIRD))); mes "[Job Master]"; } } 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 "You need "+(([email protected]>0)[email protected]+" more base levels "+(([email protected]>0)?"/ ":""):"")+(([email protected]>0)[email protected]+" more job levels ":"")+"to continue."; close; } mes "Switch to "+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 "No more jobs are available."; close; } if (([email protected]&EAJ_BASEMASK) == EAJ_NOVICE) { if (JobLevel < .JobReq[0]) mes "A job level of "+.JobReq[0]+" is required to change into the 1st Class."; else if (Class == 4001 && .LastJob && lastJob) { mes "Switch classes now?"; 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 "No more jobs are available."; else if (!([email protected]&EAJL_2) && JobLevel < .JobReq[1]) mes "A job level of "+.JobReq[1]+" is required to change into the 2nd Class."; else if (.LastJob && lastJob && ([email protected]&EAJL_UPPER)) { mes "Switch classes now?"; next; Job_Menu(lastJob+4001); } else Job_Menu([email protected],[email protected]); close; function Job_Menu { while(1) { if (getargcount() > 1) { mes "Select a job."; set [email protected]$,""; for(set [email protected],0; [email protected]<getargcount(); set [email protected],[email protected]+1) set [email protected]$, [email protected]$+" ~ "+jobname(getarg([email protected]))+":"; set [email protected]$, [email protected]$+" ~ ^777777Cancel^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 "[Job Master]"; mes "A base level of "+.SNovice+" is required to turn into a "+jobname([email protected])+"."; close; } mes "[Job Master]"; mes "Are you sure?"; next; } else set [email protected], getarg(0); if (select(" ~ Change into ^0055FF"+jobname([email protected])+"^000000 class: ~ ^777777"+((getargcount() > 1)?"Go back":"Cancel")+"^000000") == 1) { mes "[Job Master]"; mes "You are now "+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 "[Job Master]"; } 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,10; // 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,0; // Get platinum skills automatically? (1: yes / 0: no) end; }What I want is each time they change a job for example from Novice changing to Swordsman then he/she will receive a +10 Blade[4] bounded to his/her account. then Swordsman to Knight receive another weapon. that's all
i hope someone can help me out with this
thanks!
Link to comment
Share on other sites