drupi

Members
  • Content count

    2
  • Avg. Content Per Day

    0
  • Joined

  • Last visited

Community Reputation

0 Neutral

About drupi

  • Rank
    New Member
  1. //===== rAthena Script ======================================= //= Job Master //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.3 //===== Compatible With: ===================================== //= rAthena SVN r16114+ //===== 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] //============================================================ payon,166,97,6 script Job Master 113,{ function Job_Menu; function A_An; 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: ~ ^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) setarray [email protected][0],[email protected],70; if ([email protected][0] && .ThirdClass) { 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 "+A_An(jobname([email protected]))+"!"; if ([email protected]==4001 && .LastJob) set lastJob, Class; jobchange [email protected]; if ([email protected]==4001 || [email protected]==4023) resetlvl(1); //set StatusPoint,StatusPoint + 4891; specialeffect2 338; specialeffect2 432; if (.Platinum) callsub Get_Platinum; close; } if (getargcount() == 1) return; mes "[Job Master]"; } end; } function A_An { setarray [email protected]$[0],"a","e","i","o","u"; set [email protected]$, "_"+getarg(0); for(set [email protected],0; [email protected]<5; set [email protected],[email protected]+1) if (compare([email protected]$,"_"[email protected]$[[email protected]])) return "an "+getarg(0); return "a "+getarg(0); } 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(roclass(eaclass()&EAJ_UPPERMASK)) { 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 .SNovice,45; // Minimum base level to turn into Super Novice set .LastJob,1; // Enforce linear class changes? (1: yes / 0: no) set .SkillPointCheck,0; // Force player to use up all skill points? (1: yes / 0: no) set .Platinum,1; // Get platinum skills automatically? (1: yes / 0: no) end; } Here's a working job changer. Credits to Euphy in making this script
  2. Hi. I'm thinking of creating an event that simulates what happens on Thanatos Tower but modified in a way that the entire server should participate in order to clear it. Of course, if cleared, everyone who participated will receive a form of reward 1. is this a good idea? if yes, 2. has this been done before? if no, 3. where do we start?