Advertisement
Guest User

Untitled

a guest
May 16th, 2014
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.85 KB | None | 0 0
  1. //===== eAthena Script =======================================
  2. //= eAthena Jobchanger AKA Job Master
  3. //===== By: ==================================================
  4. //= eAthena Dev Team [Ori:LunatikBunnie] [Cur:Lance]
  5. //===== Current Version: =====================================
  6. //= 1.5a
  7. //===== Compatible With: =====================================
  8. //= eAthena SVN Trunk 6674
  9. //===== Description: =========================================
  10. //= Changes your job without asking too much
  11. //= For other info, please contact me at Lunatikbunnie@gmail.com
  12. //= Editted menu to avoid button mashing.
  13. //= 1.3 Added TK/SL/SG, thanks to Haplo. Fixed minor bugs [Lupus]
  14. //= script leaves grabage variable: 'lastJob'
  15. //= 1.4 Added NJ/GS, changed all job numbers to Job_* constants.
  16. //= All credits go to pxxx [Skotlex]
  17. //= 1.5 Rewrite everything from scratch. [Lance]
  18. //= 1.5a fixed Baby -> Super Baby change. Switched to JobName() [Lupus]
  19. //============================================================
  20. prontera,153,193,6 script Job Master 123,{
  21. mes "^ff0000[Job Master]^000000";
  22. if(Upper == 1 && Class >= Job_Lord_Knight) goto L_noReq;
  23. if(SkillPoint != 0){
  24. mes "I'm sorry, please use up all your skill points before changing jobs";
  25. mes "Please come again soon!";
  26. close;
  27. }
  28. if(JobLevel < 10) goto L_LvError;
  29. switch(Class){
  30. case Job_Novice_High:
  31. case Job_Baby:
  32. case Job_Novice:
  33. skill 142,1,0;
  34. skill 143,1,0;
  35. mes "Welcome, please select the job you wish to change into";
  36. if(lastJob != 0 && Class == Job_Novice_High){
  37. switch(lastJob){
  38. case Job_Knight:
  39. case Job_Crusader:
  40. set @target_job, Job_Swordman_High;
  41. break;
  42. case Job_Monk:
  43. case Job_Priest:
  44. set @target_job, Job_Acolyte_High;
  45. break;
  46. case Job_Alchemist:
  47. case Job_Blacksmith:
  48. set @target_job, Job_Merchant_High;
  49. break;
  50. case Job_Rogue:
  51. case Job_Assassin:
  52. set @target_job, Job_Thief_High;
  53. break;
  54. case Job_Wizard:
  55. case Job_Sage:
  56. set @target_job, Job_Mage_High;
  57. break;
  58. case Job_Hunter:
  59. case Job_Bard:
  60. case Job_Dancer:
  61. set @target_job, Job_Archer_High;
  62. break;
  63. }
  64. } else {
  65. switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief",
  66. "Super Novice","Taekwon","Gunslinger","Ninja")){
  67. case 7:
  68. if(Class == Job_Novice_High) goto L_noReq;
  69. if($@JC_SupNovM > BaseLevel) goto L_BvError;
  70. if(Upper == 2)
  71. set @target_job, Job_Super_Baby;
  72. else
  73. set @target_job, Job_SuperNovice;
  74. break;
  75. case 8:
  76. if(Class == Job_Novice_High) goto L_noReq;
  77. if(Upper == 2) goto L_noReq;
  78. set @target_job, Job_Taekwon;
  79. break;
  80. case 9:
  81. case 10:
  82. if(Class == Job_Novice_High || Upper == 2) goto L_noReq;
  83. set @target_job, @menu + 15;
  84. break;
  85. default:
  86. set @target_job, @menu;
  87. if(Class == Job_Novice_High) set @target_job, @target_job + 4001;
  88. break;
  89. }
  90. }
  91. mes "Are you sure you want to change to " + JobName(@target_job) + "?";
  92. if(select("No","Yes") == 2){
  93. callfunc "Job_Change", @target_job;
  94. if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) {
  95. callfunc "F_ClearJobVar";
  96. } else {
  97. if($@JC_Plat) goto L_GivePlat;
  98. }
  99. }
  100. close;
  101. break;
  102. default:
  103. if(JobLevel < $@JC_MinimumJB) goto L_LvError;
  104. deletearray @job_opt, getarraysize(@job_opt);
  105. if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){
  106. if(lastJob != 0){
  107. set @target_job, lastJob + 4001;
  108. } else {
  109. switch(Class){
  110. case Job_Swordman_High:
  111. case Job_Baby_Swordman:
  112. case Job_Swordman:
  113. set @job_opt[0], Job_Knight;
  114. set @job_opt[1], Job_Crusader;
  115. break;
  116. case Job_Mage_High:
  117. case Job_Baby_Mage:
  118. case Job_Mage:
  119. set @job_opt[0], Job_Wizard;
  120. set @job_opt[1], Job_Sage;
  121. break;
  122. case Job_Archer_High:
  123. case Job_Baby_Archer:
  124. case Job_Archer:
  125. set @job_opt[0], Job_Hunter;
  126. if(Sex == 0)
  127. set @job_opt[1], Job_Dancer;
  128. else
  129. set @job_opt[1], Job_Bard;
  130. break;
  131. case Job_Acolyte_High:
  132. case Job_Baby_Acolyte:
  133. case Job_Acolyte:
  134. set @job_opt[0], Job_Priest;
  135. set @job_opt[1], Job_Monk;
  136. break;
  137. case Job_Merchant_High:
  138. case Job_Baby_Merchant:
  139. case Job_Merchant:
  140. set @job_opt[0], Job_Blacksmith;
  141. set @job_opt[1], Job_Alchemist;
  142. break;
  143. case Job_Thief_High:
  144. case Job_Baby_Thief:
  145. case Job_Thief:
  146. set @job_opt[0], Job_Assassin;
  147. set @job_opt[1], Job_Rogue;
  148. break;
  149. default:
  150. set @job_opt[0], Job_Star_Gladiator;
  151. set @job_opt[1], Job_Soul_Linker;
  152. break;
  153. }
  154. mes "Welcome, please select the job you wish to change into";
  155. set @target_job, @job_opt[select(JobName(@job_opt[0]), JobName(@job_opt[1]))-1];
  156. if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001;
  157. }
  158. mes "Are you sure you want to change to " + JobName(@target_job) + "?";
  159. if(select("No","Yes")==2){
  160. callfunc "Job_Change", @target_job;
  161. if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) {
  162. callfunc "F_ClearJobVar";
  163. } else {
  164. if($@JC_Plat) goto L_GivePlat;
  165. }
  166. }
  167. close;
  168. }
  169. if(checkfalcon() || checkcart() || checkriding()) goto L_remove;
  170. if((Class >=Job_Knight) && (Class <=Job_Crusader2)){
  171. mes "Do you want to reborn?";
  172. if(select("Yes","No")==1){
  173. if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh;
  174. set lastJob, Class;
  175. if(Class == Job_Knight2){
  176. set lastJob, Job_Knight;
  177. } else {
  178. if(Class == Job_Crusader2){
  179. set lastJob, Job_Crusader;
  180. }
  181. }
  182. jobchange Job_Novice_High;
  183. resetlvl(1);
  184. skill 142,1,0;
  185. skill 143,1,0;
  186. }
  187. close;
  188. }
  189. }
  190. mes "I'm sorry, there are no further classes for your job.";
  191. close;
  192.  
  193. L_GivePlat:
  194. if (BaseClass==Job_SuperNovice) goto L_sSuperN;
  195. if (BaseClass==Job_Swordman) goto L_sSword;
  196. if (BaseClass==Job_Mage) goto L_sMage;
  197. if (BaseClass==Job_Archer) goto L_sArcher;
  198. if (BaseClass==Job_Acolyte) goto L_sAcolyte;
  199. if (BaseClass==Job_Merchant) goto L_sMerchant;
  200. if (BaseClass==Job_Thief) goto L_sThief;
  201. close;
  202. L_sSuperN:
  203. skill 142,1,0;
  204. close;
  205. L_sSword:
  206. skill 142,1,0;
  207. skill 144,1,0;
  208. skill 145,1,0;
  209. skill 146,1,0;
  210. close;
  211. L_sMage:
  212. skill 142,1,0;
  213. skill 157,1,0;
  214. close;
  215. L_sArcher:
  216. skill 142,1,0;
  217. skill 147,1,0;
  218. skill 148,1,0;
  219. close;
  220. L_sAcolyte:
  221. skill 142,1,0;
  222. skill 156,1,0;
  223. close;
  224. L_sMerchant:
  225. skill 142,1,0;
  226. skill 153,1,0;
  227. skill 154,1,0;
  228. skill 155,1,0;
  229. close;
  230. L_sThief:
  231. skill 142,1,0;
  232. skill 149,1,0;
  233. skill 150,1,0;
  234. skill 151,1,0;
  235. skill 152,1,0;
  236. close;
  237.  
  238. L_cantCh:
  239. mes "I'm sorry, you do not meet the requirements to change";
  240. mes "Please come again soon!";
  241. close;
  242.  
  243. L_LvError:
  244. mes "I'm sorry, you do not seem to have enough Job Levels";
  245. mes "Please come again soon!";
  246. close;
  247.  
  248. L_BvError:
  249. mes "I'm sorry, you do not seem to have enough Base Levels";
  250. mes "Please come again soon!";
  251. close;
  252.  
  253. L_noReq:
  254. mes "I'm sorry, you do not meet the requirements to change";
  255. mes "Please come again soon!";
  256. close;
  257.  
  258. L_remove:
  259. mes "Please remove your cart,falcon or peco";
  260. mes "Please come again soon!";
  261. close;
  262.  
  263. OnInit:
  264. // Variable Setup
  265. set $@JC_MinimumJB, 40; //Minimum job level for changing between 2nd and advance Class (Default : 40)
  266. set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes)
  267. set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45)
  268. end;
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement