Advertisement
hendra814

Mission Board

Jan 23rd, 2018
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 78.45 KB | None | 0 0
  1. // ....... if your server has { Overwriting user function [int__] } don't blame me ..........
  2. function script int__ {
  3. set .@num, atoi(getarg(0));
  4. if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0);
  5. set .@l, getstrlen(.@num);
  6. set .@i, 0;
  7. while ( .@i < .@l ) {
  8. set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$;
  9. if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$;
  10. set .@i, .@i +1 ;
  11. }
  12. return .@num$;
  13. }
  14.  
  15. //===== eAthena Script ============================================
  16. //= Mission Board
  17. //===== By: =======================================================
  18. //= ~AnnieRuru~
  19. //===== Current Version: ==========================================
  20. //= 2.0
  21. //===== Compatible With: ==========================================
  22. //= eAthena 14214 Trunk
  23. //===== Description: ==============================================
  24. //= allow admin to setup their own quests dynamically
  25. //===== Topic =====================================================
  26. //= http://www.eathena.ws/board/index.php?showtopic=242306
  27. //===== Additional Comments: ======================================
  28. //= tired ....
  29. //=================================================================
  30.  
  31. - script mission board#127::ms_b_ -1,{
  32. mes "["+ strnpcinfo(1) +"]";
  33. if ( atoi( strnpcinfo(2) ) <= 0 || atoi( strnpcinfo(2) ) > 127 ) {
  34. mes " ";
  35. mes "this npc has error";
  36. mes "please report to GM";
  37. mes "Reason: invalid npc id";
  38. close;
  39. }
  40. if ( .duplicate_id ) {
  41. for ( set .@i, 0; .@i < getarraysize(.duplicate_id); set .@i, .@i +1 ) {
  42. if ( .duplicate_id[.@i] == atoi( strnpcinfo(2) ) ) {
  43. mes " ";
  44. mes "this npc has error";
  45. mes "please report to GM";
  46. mes "Reason: duplicate npc id#"+ strnpcinfo(2);
  47. close;
  48. }
  49. }
  50. }
  51. if ( .loading == 1 ) {
  52. mes " ";
  53. mes "Loading mission data...";
  54. mes " ";
  55. mes "Please wait";
  56. close;
  57. }
  58. if ( @ms_b_loading == 1 ) {
  59. mes " ";
  60. mes "Loading player data...";
  61. mes " ";
  62. mes "Please wait";
  63. close;
  64. }
  65. mes "please select an option";
  66. set @slot, 0;
  67. next;
  68. for ( set .@i, 1; .@i <= 4; set .@i, .@i +1 ) {
  69. if ( getd("@ms_b_m_"+ .@i) ) {
  70. if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") == "" ) {
  71. dispbottom "Mission Board: Your Mission#"+ .@i +" has deleted";
  72. deletearray getd("@ms_b_m_"+ .@i);
  73. setd "ms_b_m_"+ .@i +"$", "";
  74. deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
  75. }
  76. else if ( getd("@ms_b_m_"+ .@i +"[1]") && getd("@ms_b_m_"+ .@i +"[1]") <= gettimetick(2) ) {
  77. dispbottom "Mission #1: "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") +" has Time Up";
  78. deletearray getd("@ms_b_m_"+ .@i);
  79. setd "ms_b_m_"+ .@i +"$", "";
  80. deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
  81. }
  82. }
  83. }
  84. for ( set .@i, 1; .@i < getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 ) {
  85. if ( getd("@ms_b_n_"+ strnpcinfo(2) +"[0]") != atoi( gettimestr("%Y%m%d", 9) ) && getd(".ms_b_m_"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 1 ||
  86. getd(".ms_b_m_"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"[6]") == 0 ) {
  87. deletearray getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]"), 1;
  88. set .@i, .@i -1 ;
  89. }
  90. }
  91. if ( getd("@ms_b_n_"+ strnpcinfo(2) +"[1]") ) {
  92. setd "ms_b_n_"+ strnpcinfo(2) +"$", gettimestr("%Y%m%d", 9);
  93. for ( set .@i, 1; .@i < getarraysize( getd("@ms_b_n_"+ strnpcinfo(2) ) ); set .@i, .@i +1 )
  94. setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
  95. }
  96. else
  97. setd "ms_b_n_"+ strnpcinfo(2) +"$", "";
  98. switch ( select ( "submit mission", "give up a mission", "take a mission", ( getgmlevel() < 99 )?"":"^FF0000gm setting^000000" ) ) {
  99. case 1:
  100. mes "["+ strnpcinfo(1) +"]";
  101. set @slot, select(
  102. "#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
  103. "#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
  104. "#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
  105. "#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
  106. if ( getd("@ms_b_m_"+ @slot +"[0]") == 0 ) {
  107. mes "don't have any mission on that slot";
  108. close;
  109. }
  110. callsub L_showprogress;
  111. mes "submit this mission ?";
  112. next;
  113. if ( select ( "Yes", "No" ) == 2 ) close;
  114. mes "["+ strnpcinfo(1) +"]";
  115. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[11]") != atoi( strnpcinfo(2) ) ) {
  116. mes "you should submit this mission to";
  117. mes "^0000FF"+ .ms_b_name$[ getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[11]") ] +"^000000";
  118. close;
  119. }
  120. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 ) {
  121. if ( getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") < getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]") ) {
  122. mes "you must kill all the monsters on the list";
  123. close;
  124. }
  125. }
  126. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 ) {
  127. if ( countitem( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) < getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]") ) {
  128. mes "you must collect all the items on the list";
  129. close;
  130. }
  131. }
  132. if ( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ) {
  133. getinventorylist;
  134. deletearray @inventorylist_id, @inventorylist_count;
  135. deletearray @inventorylist_amount, @inventorylist_count;
  136. deletearray @inventorylist_equip, @inventorylist_count;
  137. deletearray @inventorylist_refine, @inventorylist_count;
  138. deletearray @inventorylist_identify, @inventorylist_count;
  139. deletearray @inventorylist_attribute, @inventorylist_count;
  140. deletearray @inventorylist_card1, @inventorylist_count;
  141. deletearray @inventorylist_card2, @inventorylist_count;
  142. deletearray @inventorylist_card3, @inventorylist_count;
  143. deletearray @inventorylist_card4, @inventorylist_count;
  144. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 ) {
  145. set .@itemweight, .@itemweight + getiteminfo( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), 6 ) * getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]");
  146. }
  147. if ( @inventorylist_count > 95 || weight + .@itemweight > maxweight ) {
  148. mes "you can't submit this mission because you have to clear up some inventory space first";
  149. set @inventorylist_count, 0;
  150. close;
  151. }
  152. set @inventorylist_count, 0;
  153. }
  154. mes "mission complete";
  155. mes " ";
  156. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 )
  157. delitem getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1)+"]");
  158. mes "[Rewards]";
  159. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) {
  160. mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) +"^000000";
  161. dispbottom "Mission Reward > Base Exp : "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") );
  162. set baseexp, baseexp + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]");
  163. }
  164. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) {
  165. mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) +"^000000";
  166. dispbottom "Mission Reward > Job Exp : "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") );
  167. set jobexp, jobexp + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]");
  168. }
  169. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) {
  170. mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +"^000000";
  171. dispbottom "Mission Reward > "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +" Zeny";
  172. set zeny, zeny + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]");
  173. }
  174. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) {
  175. mes "Cash Point : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +"^000000";
  176. dispbottom "Mission Reward > "+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +" Cash Points";
  177. set #CASHPOINTS, #CASHPOINTS + getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]");
  178. }
  179. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 ) {
  180. mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000";
  181. getitem getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]"), getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]");
  182. }
  183. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[6]") ) {
  184. setd "@ms_b_n_"+ strnpcinfo(2) +"[0]", gettimestr("%Y%m%d", 9);
  185. setd "@ms_b_n_"+ strnpcinfo(2) +"["+ getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) ) +"]", getd("@ms_b_m_"+ @slot +"[0]");
  186. setd "ms_b_n_"+ strnpcinfo(2) +"$", gettimestr("%Y%m%d", 9);
  187. for ( set .@i, 1; .@i < getarraysize( getd("@ms_b_n_"+ strnpcinfo(2) ) ); set .@i, .@i +1 )
  188. setd "ms_b_n_"+ strnpcinfo(2) +"$", getd("ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
  189. }
  190. deletearray getd("@ms_b_m_"+ @slot);
  191. setd "ms_b_m_"+ @slot +"$", "";
  192. deltimer "ms_b_::OnQuest"+ @slot +"TimeUp";
  193. set @slot, 0;
  194. close;
  195. case 2:
  196. mes "["+ strnpcinfo(1) +"]";
  197. set @slot, select(
  198. "#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
  199. "#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
  200. "#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
  201. "#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
  202. if ( getd("@ms_b_m_"+ @slot +"[0]") == 0 ) {
  203. mes "don't have any mission on that slot";
  204. close;
  205. }
  206. callsub L_showprogress;
  207. mes "give up this mission ?";
  208. next;
  209. if ( select ( "Yes", "No" ) == 2 ) close;
  210. mes "["+ strnpcinfo(1) +"]";
  211. mes "^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[0]") +"^000000";
  212. mes " ";
  213. mes "you have give up this mission";
  214. deletearray getd("@ms_b_m_"+ @slot);
  215. setd "ms_b_m_"+ @slot +"$", "";
  216. deltimer "ms_b_::OnQuest"+ @slot +"TimeUp";
  217. set @slot, 0;
  218. close;
  219. case 3:
  220. mes "["+ strnpcinfo(1) +"]";
  221. if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
  222. mes "Currently unavailable";
  223. close;
  224. }
  225. set .@slot, select(
  226. "#1 "+( ( @ms_b_m_1[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]"):"^FF0000Empty" )+"^000000",
  227. "#2 "+( ( @ms_b_m_2[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]"):"^FF0000Empty" )+"^000000",
  228. "#3 "+( ( @ms_b_m_3[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]"):"^FF0000Empty" )+"^000000",
  229. "#4 "+( ( @ms_b_m_4[0] )?"^0000FF"+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]"):"^FF0000Empty" )+"^000000");
  230. if ( getd("@ms_b_m_"+ .@slot +"[0]") ) {
  231. mes "this slot already has a mission";
  232. close;
  233. }
  234. mes "choose a mission";
  235. next;
  236. while (1) {
  237. set .@menu$, "^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
  238. for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 )
  239. set .@menu$, .@menu$ +":"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
  240. set .@menu$, .@menu$ +"^000000";
  241. set .@menu, select(.@menu$) -1;
  242. set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
  243. mes "["+ strnpcinfo(1) +"]";
  244. mes "^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[0]") +"^000000";
  245. mes "Description: ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[1]") +"^000000";
  246. if ( getd(".ms_b_m_"+ .@m_id +"[6]") ) {
  247. for ( set .@i, 1; .@i < getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 ) {
  248. if ( getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") == .@m_id ) break;
  249. }
  250. mes "Status : "+( ( .@i == getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) ) || getd("@ms_b_n_"+ strnpcinfo(2)) == 0 )?"^FF0000Incomplete":"^00CC00Completed" )+"^000000";
  251. }
  252. mes " ";
  253. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_t_"+ .@m_id) ); set .@i, .@i +2 )
  254. mes "require mobs : ^0000FF"+ getd(".ms_b_t_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getmonsterinfo( getd(".ms_b_t_"+ .@m_id +"["+ .@i +"]") , 0) +"^000000";
  255. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ir_"+ .@m_id) ); set .@i, .@i +2 )
  256. mes "require items : ^0000FF"+ getd(".ms_b_ir_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ir_"+ .@m_id +"["+ .@i +"]") ) +"^000000";
  257. mes " ";
  258. if ( getd(".ms_b_m_"+ .@m_id +"[6]") || getd(".ms_b_m_"+ .@m_id +"[3]") || getd(".ms_b_m_"+ .@m_id +"[2]") ) {
  259. mes "[Limitations]";
  260. if ( getd(".ms_b_m_"+ .@m_id +"[6]") )
  261. mes "Can do : "+( ( getd(".ms_b_m_"+ .@m_id +"[6]") == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
  262. if ( getd(".ms_b_m_"+ .@m_id +"[3]") )
  263. mes "Base Level :"+( ( getd(".ms_b_m_"+ .@m_id +"[3]") )?" ^0000FF"+ getd(".ms_b_m_"+ .@m_id +"[3]") +( ( getd(".ms_b_m_"+ .@m_id +"[3]") != getd(".ms_b_m_"+ .@m_id +"[4]") )?"~"+ getd(".ms_b_m_"+ .@m_id +"[4]"):"" )+"^000000":"" );
  264. if ( getd(".ms_b_m_"+ .@m_id +"[5]") )
  265. mes "Time Limit : ^FF0000"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") /60 )?getd(".ms_b_m_"+ .@m_id +"[5]") /60 +" hour"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?" ":"" ):"" )+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?getd(".ms_b_m_"+ .@m_id +"[5]") %60 +" min":"" )+"^000000";
  266. if ( getd(".ms_b_m_"+ .@m_id +"[2]") ) {
  267. deletearray .@joblimit;
  268. for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
  269. if ( getd(".ms_b_m_"+ .@m_id +"[2]") & pow( 2, .@i ) ) {
  270. set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
  271. }
  272. }
  273. set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
  274. for ( set .@i, 1; .@i < getarraysize(.@joblimit); set .@i, .@i +1 )
  275. set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
  276. mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
  277. }
  278. mes " ";
  279. }
  280. mes "[Rewards]";
  281. if ( getd(".ms_b_m_"+ .@m_id +"[7]") )
  282. mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[7]") ) +"^000000";
  283. if ( getd(".ms_b_m_"+ .@m_id +"[8]") )
  284. mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[8]") ) +"^000000";
  285. if ( getd(".ms_b_m_"+ .@m_id +"[9]") )
  286. mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[9]") ) +"^000000";
  287. if ( getd(".ms_b_m_"+ .@m_id +"[10]") )
  288. mes "Cash Point : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ .@m_id +"[10]") ) +"^000000";
  289. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ia_"+ .@m_id ) ); set .@i, .@i +2 )
  290. mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ .@m_id +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ .@m_id +"["+ .@i +"]") ) +"^000000";
  291. next;
  292. if ( select ( "take mission", "pick another" ) == 1 ) {
  293. for ( set .@i, 1; .@i < getarraysize( getd("@ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 ) {
  294. if ( getd("@ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") == .@m_id ) {
  295. mes "["+ strnpcinfo(1) +"]";
  296. mes "You have completed this mission";
  297. set .@break, 1;
  298. next;
  299. break;
  300. }
  301. }
  302. if ( .@break == 0 && ( @ms_b_m_1[0] == .@m_id || @ms_b_m_2[0] == .@m_id || @ms_b_m_3[0] == .@m_id || @ms_b_m_4[0] == .@m_id ) ) {
  303. mes "["+ strnpcinfo(1) +"]";
  304. mes "You already taken this mission";
  305. set .@break, 1;
  306. next;
  307. }
  308. if ( .@break == 0 && getd(".ms_b_m_"+ .@m_id +"[3]") && ( baselevel < getd(".ms_b_m_"+ .@m_id +"[3]") || baselevel > getd(".ms_b_m_"+ .@m_id +"[4]") ) ) {
  309. mes "["+ strnpcinfo(1) +"]";
  310. mes "Your current level is not allow to take this mission";
  311. set .@break, 1;
  312. next;
  313. }
  314. if ( .@break == 0 && getd(".ms_b_m_"+ .@m_id +"[2]") ) {
  315. if ( basejob == Job_Novice || basejob == Job_SuperNovice ) set .@basejob, pow(2,0);
  316. else if ( basejob == Job_Swordman ) set .@basejob, pow(2,1);
  317. else if ( basejob == Job_Mage ) set .@basejob, pow(2,2);
  318. else if ( basejob == Job_Archer ) set .@basejob, pow(2,3);
  319. else if ( basejob == Job_Acolyte ) set .@basejob, pow(2,4);
  320. else if ( basejob == Job_Merchant ) set .@basejob, pow(2,5);
  321. else if ( basejob == Job_Thief ) set .@basejob, pow(2,6);
  322. else if ( basejob == Job_Knight ) set .@basejob, pow(2,7);
  323. else if ( basejob == Job_Priest ) set .@basejob, pow(2,8);
  324. else if ( basejob == Job_Wizard ) set .@basejob, pow(2,9);
  325. else if ( basejob == Job_Blacksmith ) set .@basejob, pow(2,10);
  326. else if ( basejob == Job_Hunter ) set .@basejob, pow(2,11);
  327. else if ( basejob == Job_Assassin ) set .@basejob, pow(2,12);
  328. else if ( basejob == Job_Crusader ) set .@basejob, pow(2,13);
  329. else if ( basejob == Job_Monk ) set .@basejob, pow(2,14);
  330. else if ( basejob == Job_Sage ) set .@basejob, pow(2,15);
  331. else if ( basejob == Job_Rogue ) set .@basejob, pow(2,16);
  332. else if ( basejob == Job_Alchemist ) set .@basejob, pow(2,17);
  333. else if ( basejob == Job_Bard || basejob == Job_Dancer ) set .@basejob, pow(2,18);
  334. else if ( basejob == Job_Taekwon ) set .@basejob, pow(2,19);
  335. else if ( basejob == Job_Star_Gladiator ) set .@basejob, pow(2,20);
  336. else if ( basejob == Job_Soul_Linker ) set .@basejob, pow(2,21);
  337. else if ( basejob == Job_Gunslinger ) set .@basejob, pow(2,22);
  338. else if ( basejob == Job_Ninja ) set .@basejob, pow(2,23);
  339. else dispbottom "error, pls report to GM with screenshots";
  340. if ( getd(".ms_b_m_"+ .@m_id +"[2]") & .@basejob ) ;
  341. else {
  342. mes "["+ strnpcinfo(1) +"]";
  343. mes "Your can't take this mission because of job limitations";
  344. set .@break, 1;
  345. next;
  346. }
  347. }
  348. if ( .@break == 0 ) break;
  349. }
  350. set .@break, 0;
  351. }
  352. mes "["+ strnpcinfo(1) +"]";
  353. mes "You taken a mission :";
  354. mes "^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[0]") +"^000000";
  355. if ( getd(".ms_b_m_"+ .@m_id +"[5]") ) {
  356. mes "Time Left : ^FF0000"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") /60 )?getd(".ms_b_m_"+ .@m_id +"[5]") /60 +" hour"+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?" ":"" ):"" )+( ( getd(".ms_b_m_"+ .@m_id +"[5]") %60 )?getd(".ms_b_m_"+ .@m_id +"[5]") %60 +" min":"" )+"^000000";
  357. addtimer getd(".ms_b_m_"+ .@m_id +"[5]") * 60 * 1000, "ms_b_::OnQuest"+ .@slot +"TimeUp";
  358. setd "@ms_b_m_"+ .@slot +"[1]", gettimetick(2) + getd(".ms_b_m_"+ .@m_id +"[5]") * 60;
  359. }
  360. setd "@ms_b_m_"+ .@slot +"[0]", .@m_id;
  361. setd "ms_b_m_"+ .@slot +"$", getd("@ms_b_m_"+ .@slot +"[0]") +"#"+ getd("@ms_b_m_"+ .@slot +"[1]");
  362. close;
  363. case 4:
  364. if ( getgmlevel() < 99 ) end;
  365. while (1) {
  366. mes "["+ strnpcinfo(1) +"]";
  367. mes "select an option";
  368. next;
  369. switch ( select ( "setup a mission", "edit a mission", "remove a mission", "swap mission order" ) ) {
  370. case 1:
  371. if ( getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ) == 40 ) {
  372. mes "["+ strnpcinfo(1) +"]";
  373. mes "only allow to setup 40 missions per npc";
  374. next;
  375. break;
  376. }
  377. deletearray @tmp_ms_b_m_$;
  378. deletearray @tmp_ms_b_m_;
  379. deletearray @tmp_ms_b_t_;
  380. deletearray @tmp_ms_b_ir_;
  381. deletearray @tmp_ms_b_ia_;
  382. if ( callsub( L_setupmission, 0 ) == 0 ) {
  383. deletearray @tmp_ms_b_m_$;
  384. deletearray @tmp_ms_b_m_;
  385. deletearray @tmp_ms_b_t_;
  386. deletearray @tmp_ms_b_ir_;
  387. deletearray @tmp_ms_b_ia_;
  388. break;
  389. }
  390. set $ms_b_id, $ms_b_id +1 ;
  391. setd ".ms_b_n_"+ strnpcinfo(2) +"["+ getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ) +"]", $ms_b_id;
  392. setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd(".ms_b_n_"+ strnpcinfo(2) +"[0]");
  393. for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ); set .@i, .@i +1 )
  394. setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
  395. set @tmp_ms_b_m_[11], strnpcinfo(2);
  396. copyarray getd(".ms_b_m_"+ $ms_b_id +"$"), @tmp_ms_b_m_$, 128;
  397. copyarray getd(".ms_b_m_"+ $ms_b_id), @tmp_ms_b_m_, 128;
  398. copyarray getd(".ms_b_t_"+ $ms_b_id ), @tmp_ms_b_t_, 128;
  399. copyarray getd(".ms_b_ir_"+ $ms_b_id ), @tmp_ms_b_ir_, 128;
  400. copyarray getd(".ms_b_ia_"+ $ms_b_id ), @tmp_ms_b_ia_, 128;
  401. setarray getd("$ms_b_m_"+ $ms_b_id +"$"),
  402. @tmp_ms_b_m_$[0],
  403. @tmp_ms_b_m_$[1],
  404. ( ( @tmp_ms_b_m_[2] )?@tmp_ms_b_m_[2]:"" )+"#"+( ( @tmp_ms_b_m_[3] )?@tmp_ms_b_m_[3]:"" )+"#"+( ( @tmp_ms_b_m_[4] )?@tmp_ms_b_m_[4]:"" )+"#"+( ( @tmp_ms_b_m_[5] )?@tmp_ms_b_m_[5]:"" )+"#"+( ( @tmp_ms_b_m_[6] )?@tmp_ms_b_m_[6]:"" )+"#"+( ( @tmp_ms_b_m_[7] )?@tmp_ms_b_m_[7]:"" )+"#"+( ( @tmp_ms_b_m_[8] )?@tmp_ms_b_m_[8]:"" )+"#"+( ( @tmp_ms_b_m_[9] )?@tmp_ms_b_m_[9]:"" )+"#"+( ( @tmp_ms_b_m_[10] )?@tmp_ms_b_m_[10]:"" )+"#"+( ( @tmp_ms_b_m_[11] )?@tmp_ms_b_m_[11]:"" )+"#"+( ( @tmp_ms_b_m_[12] )?@tmp_ms_b_m_[12]:"" )+"#"+( ( @tmp_ms_b_m_[13] )?@tmp_ms_b_m_[13]:"" ),
  405. ( ( @tmp_ms_b_t_[0] )?@tmp_ms_b_t_[0]:"" )+"#"+( ( @tmp_ms_b_t_[1] )?@tmp_ms_b_t_[1]:"" )+"#"+( ( @tmp_ms_b_t_[2] )?@tmp_ms_b_t_[2]:"" )+"#"+( ( @tmp_ms_b_t_[3] )?@tmp_ms_b_t_[3]:"" )+"#"+( ( @tmp_ms_b_t_[4] )?@tmp_ms_b_t_[4]:"" )+"#"+( ( @tmp_ms_b_t_[5] )?@tmp_ms_b_t_[5]:"" )+"#"+( ( @tmp_ms_b_t_[6] )?@tmp_ms_b_t_[6]:"" )+"#"+( ( @tmp_ms_b_t_[7] )?@tmp_ms_b_t_[7]:"" )+"#"+( ( @tmp_ms_b_t_[8] )?@tmp_ms_b_t_[8]:"" )+"#"+( ( @tmp_ms_b_t_[9] )?@tmp_ms_b_t_[9]:"" )+"#"+( ( @tmp_ms_b_t_[10] )?@tmp_ms_b_t_[10]:"" )+"#"+( ( @tmp_ms_b_t_[11] )?@tmp_ms_b_t_[11]:"" )+"#"+( ( @tmp_ms_b_t_[12] )?@tmp_ms_b_t_[12]:"" )+"#"+( ( @tmp_ms_b_t_[13] )?@tmp_ms_b_t_[13]:"" )+"#"+( ( @tmp_ms_b_t_[14] )?@tmp_ms_b_t_[14]:"" )+"#"+( ( @tmp_ms_b_t_[15] )?@tmp_ms_b_t_[15]:"" )+"#"+( ( @tmp_ms_b_ir_[0] )?@tmp_ms_b_ir_[0]:"" )+"#"+( ( @tmp_ms_b_ir_[1] )?@tmp_ms_b_ir_[1]:"" )+"#"+( ( @tmp_ms_b_ir_[2] )?@tmp_ms_b_ir_[2]:"" )+"#"+( ( @tmp_ms_b_ir_[3] )?@tmp_ms_b_ir_[3]:"" )+"#"+( ( @tmp_ms_b_ir_[4] )?@tmp_ms_b_ir_[4]:"" )+"#"+( ( @tmp_ms_b_ir_[5] )?@tmp_ms_b_ir_[5]:"" )+"#"+( ( @tmp_ms_b_ir_[6] )?@tmp_ms_b_ir_[6]:"" )+"#"+( ( @tmp_ms_b_ir_[7] )?@tmp_ms_b_ir_[7]:"" )+"#"+( ( @tmp_ms_b_ir_[8] )?@tmp_ms_b_ir_[8]:"" )+"#"+( ( @tmp_ms_b_ir_[9] )?@tmp_ms_b_ir_[9]:"" )+"#"+( ( @tmp_ms_b_ia_[0] )?@tmp_ms_b_ia_[0]:"" )+"#"+( ( @tmp_ms_b_ia_[1] )?@tmp_ms_b_ia_[1]:"" )+"#"+( ( @tmp_ms_b_ia_[2] )?@tmp_ms_b_ia_[2]:"" )+"#"+( ( @tmp_ms_b_ia_[3] )?@tmp_ms_b_ia_[3]:"" )+"#"+( ( @tmp_ms_b_ia_[4] )?@tmp_ms_b_ia_[4]:"" )+"#"+( ( @tmp_ms_b_ia_[5] )?@tmp_ms_b_ia_[5]:"" )+"#"+( ( @tmp_ms_b_ia_[6] )?@tmp_ms_b_ia_[6]:"" )+"#"+( ( @tmp_ms_b_ia_[7] )?@tmp_ms_b_ia_[7]:"" )+"#"+( ( @tmp_ms_b_ia_[8] )?@tmp_ms_b_ia_[8]:"" )+"#"+( ( @tmp_ms_b_ia_[9] )?@tmp_ms_b_ia_[9]:"" );
  406. deletearray @tmp_ms_b_m_$;
  407. deletearray @tmp_ms_b_m_;
  408. deletearray @tmp_ms_b_t_;
  409. deletearray @tmp_ms_b_ir_;
  410. deletearray @tmp_ms_b_ia_;
  411. mes " ";
  412. mes "mission setup completed";
  413. next;
  414. break;
  415. case 2:
  416. mes "["+ strnpcinfo(1) +"]";
  417. if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
  418. mes "You must setup a mission first";
  419. next;
  420. break;
  421. }
  422. mes "pick a mission to edit";
  423. next;
  424. set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
  425. for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 )
  426. set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
  427. set .@menu$, .@menu$ +":^000000 - back";
  428. set .@menu, select(.@menu$) -1;
  429. if ( .@menu == getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ) ) break;
  430. set @m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
  431. deletearray @tmp_ms_b_m_$;
  432. deletearray @tmp_ms_b_m_;
  433. deletearray @tmp_ms_b_t_;
  434. deletearray @tmp_ms_b_ir_;
  435. deletearray @tmp_ms_b_ia_;
  436. copyarray @tmp_ms_b_m_$, getd("$ms_b_m_"+ @m_id +"$"), 128;
  437. copyarray @tmp_ms_b_m_, getd(".ms_b_m_"+ @m_id ), 128;
  438. copyarray @tmp_ms_b_t_, getd(".ms_b_t_"+ @m_id ), 128;
  439. copyarray @tmp_ms_b_ir_, getd(".ms_b_ir_"+ @m_id ), 128;
  440. copyarray @tmp_ms_b_ia_, getd(".ms_b_ia_"+ @m_id ), 128;
  441. if ( callsub( L_setupmission, 1 ) == 0 ) {
  442. deletearray @tmp_ms_b_m_$;
  443. deletearray @tmp_ms_b_m_;
  444. deletearray @tmp_ms_b_t_;
  445. deletearray @tmp_ms_b_ir_;
  446. deletearray @tmp_ms_b_ia_;
  447. set @m_id, 0;
  448. break;
  449. }
  450. copyarray getd(".ms_b_m_"+ @m_id +"$"), @tmp_ms_b_m_$, 128;
  451. copyarray getd(".ms_b_m_"+ @m_id), @tmp_ms_b_m_, 128;
  452. copyarray getd(".ms_b_t_"+ @m_id ), @tmp_ms_b_t_, 128;
  453. copyarray getd(".ms_b_ir_"+ @m_id ), @tmp_ms_b_ir_, 128;
  454. copyarray getd(".ms_b_ia_"+ @m_id ), @tmp_ms_b_ia_, 128;
  455. setarray getd("$ms_b_m_"+ @m_id +"$"),
  456. @tmp_ms_b_m_$[0],
  457. @tmp_ms_b_m_$[1],
  458. ( ( @tmp_ms_b_m_[2] )?@tmp_ms_b_m_[2]:"" )+"#"+( ( @tmp_ms_b_m_[3] )?@tmp_ms_b_m_[3]:"" )+"#"+( ( @tmp_ms_b_m_[4] )?@tmp_ms_b_m_[4]:"" )+"#"+( ( @tmp_ms_b_m_[5] )?@tmp_ms_b_m_[5]:"" )+"#"+( ( @tmp_ms_b_m_[6] )?@tmp_ms_b_m_[6]:"" )+"#"+( ( @tmp_ms_b_m_[7] )?@tmp_ms_b_m_[7]:"" )+"#"+( ( @tmp_ms_b_m_[8] )?@tmp_ms_b_m_[8]:"" )+"#"+( ( @tmp_ms_b_m_[9] )?@tmp_ms_b_m_[9]:"" )+"#"+( ( @tmp_ms_b_m_[10] )?@tmp_ms_b_m_[10]:"" )+"#"+( ( @tmp_ms_b_m_[11] )?@tmp_ms_b_m_[11]:"" )+"#"+( ( @tmp_ms_b_m_[12] )?@tmp_ms_b_m_[12]:"" )+"#"+( ( @tmp_ms_b_m_[13] )?@tmp_ms_b_m_[13]:"" ),
  459. ( ( @tmp_ms_b_t_[0] )?@tmp_ms_b_t_[0]:"" )+"#"+( ( @tmp_ms_b_t_[1] )?@tmp_ms_b_t_[1]:"" )+"#"+( ( @tmp_ms_b_t_[2] )?@tmp_ms_b_t_[2]:"" )+"#"+( ( @tmp_ms_b_t_[3] )?@tmp_ms_b_t_[3]:"" )+"#"+( ( @tmp_ms_b_t_[4] )?@tmp_ms_b_t_[4]:"" )+"#"+( ( @tmp_ms_b_t_[5] )?@tmp_ms_b_t_[5]:"" )+"#"+( ( @tmp_ms_b_t_[6] )?@tmp_ms_b_t_[6]:"" )+"#"+( ( @tmp_ms_b_t_[7] )?@tmp_ms_b_t_[7]:"" )+"#"+( ( @tmp_ms_b_t_[8] )?@tmp_ms_b_t_[8]:"" )+"#"+( ( @tmp_ms_b_t_[9] )?@tmp_ms_b_t_[9]:"" )+"#"+( ( @tmp_ms_b_t_[10] )?@tmp_ms_b_t_[10]:"" )+"#"+( ( @tmp_ms_b_t_[11] )?@tmp_ms_b_t_[11]:"" )+"#"+( ( @tmp_ms_b_t_[12] )?@tmp_ms_b_t_[12]:"" )+"#"+( ( @tmp_ms_b_t_[13] )?@tmp_ms_b_t_[13]:"" )+"#"+( ( @tmp_ms_b_t_[14] )?@tmp_ms_b_t_[14]:"" )+"#"+( ( @tmp_ms_b_t_[15] )?@tmp_ms_b_t_[15]:"" )+"#"+( ( @tmp_ms_b_ir_[0] )?@tmp_ms_b_ir_[0]:"" )+"#"+( ( @tmp_ms_b_ir_[1] )?@tmp_ms_b_ir_[1]:"" )+"#"+( ( @tmp_ms_b_ir_[2] )?@tmp_ms_b_ir_[2]:"" )+"#"+( ( @tmp_ms_b_ir_[3] )?@tmp_ms_b_ir_[3]:"" )+"#"+( ( @tmp_ms_b_ir_[4] )?@tmp_ms_b_ir_[4]:"" )+"#"+( ( @tmp_ms_b_ir_[5] )?@tmp_ms_b_ir_[5]:"" )+"#"+( ( @tmp_ms_b_ir_[6] )?@tmp_ms_b_ir_[6]:"" )+"#"+( ( @tmp_ms_b_ir_[7] )?@tmp_ms_b_ir_[7]:"" )+"#"+( ( @tmp_ms_b_ir_[8] )?@tmp_ms_b_ir_[8]:"" )+"#"+( ( @tmp_ms_b_ir_[9] )?@tmp_ms_b_ir_[9]:"" )+"#"+( ( @tmp_ms_b_ia_[0] )?@tmp_ms_b_ia_[0]:"" )+"#"+( ( @tmp_ms_b_ia_[1] )?@tmp_ms_b_ia_[1]:"" )+"#"+( ( @tmp_ms_b_ia_[2] )?@tmp_ms_b_ia_[2]:"" )+"#"+( ( @tmp_ms_b_ia_[3] )?@tmp_ms_b_ia_[3]:"" )+"#"+( ( @tmp_ms_b_ia_[4] )?@tmp_ms_b_ia_[4]:"" )+"#"+( ( @tmp_ms_b_ia_[5] )?@tmp_ms_b_ia_[5]:"" )+"#"+( ( @tmp_ms_b_ia_[6] )?@tmp_ms_b_ia_[6]:"" )+"#"+( ( @tmp_ms_b_ia_[7] )?@tmp_ms_b_ia_[7]:"" )+"#"+( ( @tmp_ms_b_ia_[8] )?@tmp_ms_b_ia_[8]:"" )+"#"+( ( @tmp_ms_b_ia_[9] )?@tmp_ms_b_ia_[9]:"" );
  460. deletearray @tmp_ms_b_m_$;
  461. deletearray @tmp_ms_b_m_;
  462. deletearray @tmp_ms_b_t_;
  463. deletearray @tmp_ms_b_ir_;
  464. deletearray @tmp_ms_b_ia_;
  465. set @m_id, 0;
  466. mes " ";
  467. mes "mission edit completed";
  468. next;
  469. break;
  470. case 3:
  471. mes "["+ strnpcinfo(1) +"]";
  472. if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
  473. mes "You must setup a mission first";
  474. next;
  475. break;
  476. }
  477. mes "pick a mission to delete";
  478. next;
  479. set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
  480. for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 )
  481. set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
  482. set .@menu$, .@menu$ +":^000000 - back";
  483. set .@menu, select(.@menu$) -1;
  484. if ( .@menu == getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ) ) break;
  485. mes "["+ strnpcinfo(1) +"]";
  486. mes "are you sure you want to delete this mission ?";
  487. mes " ";
  488. set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
  489. mes "^996600"+ .@m_id +". ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$") +"^000000";
  490. mes "Description: ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$[1]") +"^000000";
  491. next;
  492. if ( select ( "No", "Yes" ) == 1 ) break;
  493. mes "["+ strnpcinfo(1) +"]";
  494. mes "this mission has deleted";
  495. mes " ";
  496. mes "^996600"+ .@m_id +". ^0000FF"+ getd("$ms_b_m_"+ .@m_id +"$") +"^000000";
  497. deletearray getd(".ms_b_m_"+ .@m_id +"$");
  498. deletearray getd(".ms_b_m_"+ .@m_id );
  499. deletearray getd(".ms_b_t_"+ .@m_id );
  500. deletearray getd(".ms_b_ir_"+ .@m_id );
  501. deletearray getd(".ms_b_ia_"+ .@m_id );
  502. deletearray getd("$ms_b_m_"+ .@m_id +"$");
  503. deletearray getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]"), 1;
  504. setd "$ms_b_n_"+ strnpcinfo(2) +"$", ( ( getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") )?getd(".ms_b_n_"+ strnpcinfo(2) +"[0]"):"" );
  505. for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ); set .@i, .@i +1 )
  506. setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
  507. next;
  508. break;
  509. case 4:
  510. mes "["+ strnpcinfo(1) +"]";
  511. if ( getd(".ms_b_n_"+ strnpcinfo(2) ) == 0 ) {
  512. mes "You must setup a mission first";
  513. next;
  514. break;
  515. }
  516. mes "pick a mission to swap";
  517. next;
  518. set .@menu$, "^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"[0]") +"$");
  519. for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ); set .@i, .@i +1 )
  520. set .@menu$, .@menu$ +":^996600"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +". ^0000FF"+ getd("$ms_b_m_"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]") +"$");
  521. set .@menu$, .@menu$ +":^000000 - back";
  522. set .@menu, select(.@menu$) -1;
  523. if ( .@menu == getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ) ) break;
  524. mes "["+ strnpcinfo(1) +"]";
  525. mes "mission selected :";
  526. set .@m_id1, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]");
  527. mes "^996600"+ .@m_id1 +". ^0000FF"+ getd("$ms_b_m_"+ .@m_id1 +"$") +"^000000";
  528. mes " ";
  529. mes "pick another mission to swap";
  530. next;
  531. set .@menu2, select(.@menu$) -1;
  532. if ( .@menu2 == getarraysize( getd(".ms_b_n_"+ strnpcinfo(2)) ) ) break;
  533. mes "["+ strnpcinfo(1) +"]";
  534. mes "these both missions are swapped";
  535. set .@m_id2, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu2 +"]");
  536. mes "^996600"+ .@m_id1 +". ^0000FF"+ getd("$ms_b_m_"+ .@m_id1 +"$") +"^000000";
  537. mes "^996600"+ .@m_id2 +". ^0000FF"+ getd("$ms_b_m_"+ .@m_id2 +"$") +"^000000";
  538. setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu +"]", .@m_id2;
  539. setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@menu2 +"]", .@m_id1;
  540. setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd(".ms_b_n_"+ strnpcinfo(2) +"[0]");
  541. for ( set .@i, 1; .@i < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ); set .@i, .@i +1 )
  542. setd "$ms_b_n_"+ strnpcinfo(2) +"$", getd("$ms_b_n_"+ strnpcinfo(2) +"$") +"#"+ getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@i +"]");
  543. next;
  544. break;
  545. }
  546. }
  547. }
  548. close;
  549. OnQuest1TimeUp:
  550. dispbottom "Mission #1: "+ getd("$ms_b_m_"+ @ms_b_m_1[0] +"$[0]") +" has Time Up";
  551. deletearray @ms_b_m_1;
  552. set ms_b_m_1$, "";
  553. end;
  554. OnQuest2TimeUp:
  555. dispbottom "Mission #2: "+ getd("$ms_b_m_"+ @ms_b_m_2[0] +"$[0]") +" has Time Up";
  556. deletearray @ms_b_m_2;
  557. set ms_b_m_2$, "";
  558. end;
  559. OnQuest3TimeUp:
  560. dispbottom "Mission #3: "+ getd("$ms_b_m_"+ @ms_b_m_3[0] +"$[0]") +" has Time Up";
  561. deletearray @ms_b_m_3;
  562. set ms_b_m_3$, "";
  563. end;
  564. OnQuest4TimeUp:
  565. dispbottom "Mission #4: "+ getd("$ms_b_m_"+ @ms_b_m_4[0] +"$[0]") +" has Time Up";
  566. deletearray @ms_b_m_4;
  567. set ms_b_m_4$, "";
  568. end;
  569. L_showprogress:
  570. mes "^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[0]") +"^000000";
  571. mes "Description: ^0000FF"+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"$[1]") +"^000000";
  572. mes " ";
  573. mes "[mission progress]";
  574. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[5]") ) {
  575. set .@left, getd("@ms_b_m_"+ @slot +"[1]") - gettimetick(2);
  576. set .@hour, .@left / 3600;
  577. set .@min, .@left % 3600 / 60;
  578. set .@sec, .@left % 60;
  579. mes "Time Left: ^FF0000"+( ( .@hour )?.@hour +" hour ":"" )+( ( .@hour || .@min )?.@min +" min ":"" )+ .@sec +" sec^000000";
  580. }
  581. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 )
  582. mes "Mobs : ^0000FF"+ getmonsterinfo( getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") , 0) +"^000000 ["+( ( getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") > getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") )?getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]"):getd("@ms_b_m_"+ @slot +"["+( .@i/2 +2 )+"]") ) +"/"+ getd(".ms_b_t_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +"]";
  583. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 )
  584. mes "Items : ^0000FF"+ getitemname( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000 ["+ countitem( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"/"+ getd(".ms_b_ir_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +"]";
  585. mes " ";
  586. mes "[Rewards]";
  587. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") )
  588. mes "Base Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[7]") ) +"^000000";
  589. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") )
  590. mes "Job Exp : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[8]") ) +"^000000";
  591. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") )
  592. mes "Zeny : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[9]") ) +"^000000";
  593. if ( getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") )
  594. mes "Cash Point : ^0000FF"+ callfunc("int__", getd(".ms_b_m_"+ getd("@ms_b_m_"+ @slot +"[0]") +"[10]") ) +"^000000";
  595. for ( set .@i, 0; .@i < getarraysize( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") ) ); set .@i, .@i +2 )
  596. mes "Item : ^0000FF"+ getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ (.@i +1) +"]") +" "+ getitemname( getd(".ms_b_ia_"+ getd("@ms_b_m_"+ @slot +"[0]") +"["+ .@i +"]") ) +"^000000";
  597. mes " ";
  598. return;
  599. L_setupmission:
  600. while (1) {
  601. mes "["+ strnpcinfo(1) +"]";
  602. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  603. mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
  604. mes " ";
  605. if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
  606. mes "require mobs : ^FF0000Incomplete^000000";
  607. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
  608. mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
  609. if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
  610. mes "require items : ^FF0000Incomplete^000000";
  611. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
  612. mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
  613. mes " ";
  614. if ( @tmp_ms_b_m_[6] || @tmp_ms_b_m_[3] || @tmp_ms_b_m_[5] || @tmp_ms_b_m_[2] ) {
  615. mes "[Limitations]";
  616. if ( @tmp_ms_b_m_[6] )
  617. mes "Can do : "+( ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
  618. if ( @tmp_ms_b_m_[3] )
  619. mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?" ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
  620. if ( @tmp_ms_b_m_[5] )
  621. mes "Time Limit : ^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000";
  622. if ( @tmp_ms_b_m_[2] ) {
  623. deletearray .@joblimit;
  624. for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
  625. if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
  626. set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
  627. }
  628. }
  629. set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
  630. for ( set .@i, 1; .@i < getarraysize(.@joblimit); set .@i, .@i +1 )
  631. set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
  632. mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
  633. }
  634. mes " ";
  635. }
  636. mes "[Rewards]";
  637. if ( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ )
  638. set .@color_reward$, "";
  639. else {
  640. mes "^FF0000Incomplete^000000";
  641. set .@color_reward$, " - ^FF0000Incomplete^000000";
  642. }
  643. if ( @tmp_ms_b_m_[7] )
  644. mes "Base Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ) +"^000000";
  645. if ( @tmp_ms_b_m_[8] )
  646. mes "Job Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ) +"^000000";
  647. if ( @tmp_ms_b_m_[9] )
  648. mes "Zeny : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ) +"^000000";
  649. if ( @tmp_ms_b_m_[10] )
  650. mes "Cash Point : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ) +"^000000";
  651. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
  652. mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
  653. next;
  654. if ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) &&
  655. ( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ ) )
  656. set .@color_all$, "^00CC00";
  657. else
  658. set .@color_all$, "^FF0000";
  659. set .@setupmenu, select (
  660. "Important Setups"+( ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) )?"":" - ^FF0000Incomplete^000000" ),
  661. "Mission Limitations",
  662. "Rewards"+ .@color_reward$,
  663. .@color_all$ +"Complete "+( ( getarg(0) )?"Edit":"Setup" )+"^000000",
  664. "- back" );
  665. switch ( .@setupmenu ) {
  666. case 1:
  667. while (1) {
  668. mes "["+ strnpcinfo(1) +"]";
  669. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  670. mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
  671. mes " ";
  672. if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
  673. mes "require mobs : ^FF0000Incomplete^000000";
  674. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
  675. mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
  676. if ( @tmp_ms_b_t_ == 0 && @tmp_ms_b_ir_ == 0 )
  677. mes "require items : ^FF0000Incomplete^000000";
  678. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
  679. mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
  680. next;
  681. set .@importantmenu, select (
  682. "Mission Name"+( ( @tmp_ms_b_m_$[0] != "" )?"":" - ^FF0000Incomplete^000000" ),
  683. "Description"+( ( @tmp_ms_b_m_$[1] != "" )?"":" - ^FF0000Incomplete^000000" ),
  684. "Require Mobs",
  685. "Require Items",
  686. "- back" );
  687. switch ( .@importantmenu ) {
  688. case 1:
  689. mes "["+ strnpcinfo(1) +"]";
  690. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  691. mes " ";
  692. mes "input mission name";
  693. next;
  694. input .@tmp$;
  695. mes "["+ strnpcinfo(1) +"]";
  696. if ( getstrlen(.@tmp$) > 55 ) {
  697. mes "the mission name must not more than 55 characters";
  698. next;
  699. break;
  700. }
  701. else if ( compare ( .@tmp$, ":" ) || compare ( .@tmp$, "^" ) ) {
  702. mes "Not allow to input these symbol";
  703. mes "-> : <- colon";
  704. mes "-> ^ <- caret";
  705. next;
  706. break;
  707. }
  708. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  709. mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
  710. mes " ";
  711. mes "Are you sure wanna change to";
  712. mes "^0000FF"+ .@tmp$ +"^000000";
  713. next;
  714. if ( select ( "Yes", "No" ) == 2 ) break;
  715. set @tmp_ms_b_m_$[0], .@tmp$;
  716. break;
  717. case 2:
  718. mes "["+ strnpcinfo(1) +"]";
  719. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  720. mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
  721. mes " ";
  722. mes "input description";
  723. next;
  724. set .@tmp1$, "";
  725. set .@tmp2$, "";
  726. set .@tmp3$, "";
  727. set .@tmp, 0;
  728. do {
  729. set .@tmp, .@tmp +1 ;
  730. input getd(".@tmp"+ .@tmp +"$");
  731. } while ( getstrlen( getd(".@tmp"+ .@tmp +"$") ) > 50 && .@tmp < 3 );
  732. mes "["+ strnpcinfo(1) +"]";
  733. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  734. mes "Description: "+( ( @tmp_ms_b_m_$[1] != "" )?"^0000FF"+ @tmp_ms_b_m_$[1]:"^FF0000Incomplete" )+"^000000";
  735. mes " ";
  736. mes "Are you sure wanna change to";
  737. mes "^0000FF"+ .@tmp1$ + .@tmp2$ + .@tmp3$ +"^000000";
  738. next;
  739. if ( select ( "Yes", "No" ) == 2 ) break;
  740. set @tmp_ms_b_m_$[1], .@tmp1$ + .@tmp2$ + .@tmp3$;
  741. break;
  742. case 3:
  743. if ( getarg(0) ) {
  744. mes "["+ strnpcinfo(1) +"]";
  745. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  746. mes " ";
  747. mes "not allow to edit require mob";
  748. mes "this is the only option can't edit";
  749. next;
  750. break;
  751. }
  752. while (1) {
  753. mes "["+ strnpcinfo(1) +"]";
  754. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  755. mes " ";
  756. if ( @tmp_ms_b_t_ == 0 )
  757. mes "require mobs :";
  758. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
  759. mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
  760. next;
  761. set .@mobmenu, select ( "add monster to kill", "remove monster to kill", "- back" );
  762. switch ( .@mobmenu ) {
  763. case 1:
  764. mes "["+ strnpcinfo(1) +"]";
  765. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  766. mes " ";
  767. if ( @tmp_ms_b_t_ == 0 )
  768. mes "require mobs :";
  769. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
  770. mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
  771. mes " ";
  772. if ( getarraysize(@tmp_ms_b_t_) == 16 ) {
  773. mes "only allow up to 8 kinds of mobs";
  774. next;
  775. break;
  776. }
  777. mes "input monster id";
  778. next;
  779. input .@tmp, 0, 9999;
  780. mes "["+ strnpcinfo(1) +"]";
  781. if ( .@tmp == 0 ) {
  782. mes "invalid value";
  783. next;
  784. break;
  785. }
  786. else if ( getmonsterinfo(.@tmp, 1) == -1 ) {
  787. mes "invalid monster id";
  788. next;
  789. break;
  790. }
  791. if ( @tmp_ms_b_t_ == 0 )
  792. mes "require mobs :";
  793. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
  794. mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
  795. mes " ";
  796. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 ) {
  797. if ( .@tmp == @tmp_ms_b_t_[.@i] ) break;
  798. }
  799. if ( .@i != getarraysize(@tmp_ms_b_t_) ) {
  800. mes "mob ^0000FF"+ getmonsterinfo(.@tmp, 0) +"^000000 is being repeated";
  801. next;
  802. break;
  803. }
  804. mes "require mobs : ^0000FF"+ getmonsterinfo(.@tmp, 0) +"^000000";
  805. mes "input amount of this monster need to kill";
  806. next;
  807. input .@tmp2, 0, 999;
  808. if ( .@tmp2 == 0 ) {
  809. mes "["+ strnpcinfo(1) +"]";
  810. mes "invalid amount";
  811. next;
  812. }
  813. else
  814. setarray @tmp_ms_b_t_[ getarraysize(@tmp_ms_b_t_) ], .@tmp, .@tmp2;
  815. break;
  816. case 2:
  817. mes "["+ strnpcinfo(1) +"]";
  818. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  819. mes " ";
  820. if ( @tmp_ms_b_t_ == 0 ) {
  821. mes "there are no monster to remove";
  822. next;
  823. break;
  824. }
  825. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
  826. mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
  827. mes " ";
  828. mes "select a mob to delete";
  829. next;
  830. set .@menu$, "^0000FF"+ @tmp_ms_b_t_[1] +" "+ getmonsterinfo(@tmp_ms_b_t_, 0);
  831. for ( set .@i, 2; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
  832. set .@menu$, .@menu$ +":"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0);
  833. set .@menu$, .@menu$ +"^000000:- back";
  834. set .@menu, select(.@menu$) -1;
  835. if ( .@menu == getarraysize(@tmp_ms_b_t_) /2 ) break;
  836. deletearray @tmp_ms_b_t_[ .@menu *2 ], 2;
  837. case 3:
  838. }
  839. if ( .@mobmenu == 3 ) break;
  840. }
  841. break;
  842. case 4:
  843. while (1) {
  844. mes "["+ strnpcinfo(1) +"]";
  845. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  846. mes " ";
  847. if ( @tmp_ms_b_ir_ == 0 )
  848. mes "require items :";
  849. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
  850. mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
  851. next;
  852. set .@item_require_menu, select ( "add item requirement", "remove a require item", "- back" );
  853. switch ( .@item_require_menu ) {
  854. case 1:
  855. mes "["+ strnpcinfo(1) +"]";
  856. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  857. mes " ";
  858. if ( @tmp_ms_b_ir_ == 0 )
  859. mes "require items : ";
  860. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
  861. mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
  862. mes " ";
  863. if ( getarraysize(@tmp_ms_b_ir_) == 10 ) {
  864. mes "only allow up to 5 kinds of items";
  865. next;
  866. break;
  867. }
  868. mes "input item id for item requirement";
  869. next;
  870. input .@tmp, 0, 32767;
  871. mes "["+ strnpcinfo(1) +"]";
  872. if ( getitemname(.@tmp) == "null" ) {
  873. mes "invalid item id";
  874. next;
  875. break;
  876. }
  877. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  878. mes " ";
  879. if ( @tmp_ms_b_ir_ == 0 )
  880. mes "require items : ";
  881. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
  882. mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
  883. mes " ";
  884. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 ) {
  885. if ( .@tmp == @tmp_ms_b_ir_[.@i] ) break;
  886. }
  887. if ( .@i != getarraysize(@tmp_ms_b_ir_) ) {
  888. mes "item ^0000FF"+ getitemname(.@tmp) +"^000000 is being repeated";
  889. next;
  890. break;
  891. }
  892. mes "require items : ^0000FF"+ getitemname(.@tmp) +"^000000";
  893. mes "input item amount for item requirement";
  894. next;
  895. input .@tmp2, 0, 30000;
  896. if ( .@tmp2 == 0 ) {
  897. mes "["+ strnpcinfo(1) +"]";
  898. mes "invalid amount";
  899. next;
  900. }
  901. else
  902. setarray @tmp_ms_b_ir_[ getarraysize(@tmp_ms_b_ir_) ], .@tmp, .@tmp2;
  903. break;
  904. case 2:
  905. mes "["+ strnpcinfo(1) +"]";
  906. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  907. mes " ";
  908. if ( @tmp_ms_b_ir_ == 0 ) {
  909. mes "there are no item to remove";
  910. next;
  911. break;
  912. }
  913. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
  914. mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
  915. mes " ";
  916. mes "select an item to delete";
  917. next;
  918. set .@menu$, "^0000FF"+ @tmp_ms_b_ir_[1] +" "+ getitemname(@tmp_ms_b_ir_);
  919. for ( set .@i, 2; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
  920. set .@menu$, .@menu$ +":"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]);
  921. set .@menu$, .@menu$ +"^000000:- back";
  922. set .@menu, select(.@menu$) -1;
  923. if ( .@menu == getarraysize(@tmp_ms_b_ir_) /2 ) break;
  924. deletearray @tmp_ms_b_ir_[ .@menu *2 ], 2;
  925. case 3:
  926. }
  927. if ( .@item_require_menu == 3 ) break;
  928. }
  929. case 5:
  930. }
  931. if ( .@importantmenu == 5 ) break;
  932. }
  933. break;
  934. case 2:
  935. while (1) {
  936. mes "["+ strnpcinfo(1) +"]";
  937. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  938. mes " ";
  939. mes "[Limitations]";
  940. mes "Can do : "+( ( @tmp_ms_b_m_[6] == 0 )?"^0000FFRepeatedly": ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
  941. mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?" ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
  942. mes "Time Limit : "+( ( @tmp_ms_b_m_[5] )?"^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000":"" );
  943. if ( @tmp_ms_b_m_[2] == 0 )
  944. mes "Job Limit : ^FF0000<none>^000000";
  945. else {
  946. deletearray .@joblimit;
  947. for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
  948. if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
  949. set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
  950. }
  951. }
  952. set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
  953. for ( set .@i, 1; .@i < getarraysize(.@joblimit); set .@i, .@i +1 )
  954. set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
  955. mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
  956. }
  957. next;
  958. set .@limitmenu, select ( "Mission Status (Can do)", "Base Level", "Time Limit", "Job limitation", "- back" );
  959. switch ( .@limitmenu ) {
  960. case 1:
  961. mes "["+ strnpcinfo(1) +"]";
  962. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  963. mes " ";
  964. mes "Can do : "+( ( @tmp_ms_b_m_[6] == 0 )?"^0000FFRepeatedly": ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
  965. mes "Please select a status";
  966. next;
  967. switch ( select ( "^0000FFRepeatedly^000000", "^00CC00Everyday^000000", "^FF0000Only Once^000000" ) ) {
  968. case 1: set @tmp_ms_b_m_[6], 0; break;
  969. case 2: set @tmp_ms_b_m_[6], 1; break;
  970. case 3: set @tmp_ms_b_m_[6], 2;
  971. }
  972. break;
  973. case 2:
  974. mes "["+ strnpcinfo(1) +"]";
  975. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  976. mes " ";
  977. mes "Base Level :";
  978. mes " ";
  979. mes "Input starting range";
  980. next;
  981. input .@tmp, 0, 1000;
  982. if ( .@tmp == 0 ) {
  983. mes "["+ strnpcinfo(1) +"]";
  984. mes "invalid value";
  985. set @tmp_ms_b_m_[3], 0;
  986. set @tmp_ms_b_m_[4], 0;
  987. next;
  988. break;
  989. }
  990. mes "["+ strnpcinfo(1) +"]";
  991. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  992. mes " ";
  993. mes "Base Level : ^0000FF"+ .@tmp +"~^000000";
  994. mes " ";
  995. mes "Input ending range";
  996. next;
  997. input .@tmp2, 0, 1000;
  998. if ( .@tmp2 == 0 ) {
  999. mes "["+ strnpcinfo(1) +"]";
  1000. mes "invalid value";
  1001. set @tmp_ms_b_m_[3], 0;
  1002. set @tmp_ms_b_m_[4], 0;
  1003. next;
  1004. break;
  1005. }
  1006. else if ( .@tmp > .@tmp2 ) {
  1007. mes "["+ strnpcinfo(1) +"]";
  1008. mes "ending range cannot higher than starting range";
  1009. next;
  1010. break;
  1011. }
  1012. else
  1013. setarray @tmp_ms_b_m_[3], .@tmp, .@tmp2;
  1014. break;
  1015. case 3:
  1016. mes "["+ strnpcinfo(1) +"]";
  1017. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  1018. mes " ";
  1019. mes "Time Limit : "+( ( @tmp_ms_b_m_[5] )?"^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000":"" );
  1020. mes " 1 = 1 minute";
  1021. mes " 60 = 1 hour";
  1022. mes "1440 = 1 day";
  1023. next;
  1024. input @tmp_ms_b_m_[5], 0, 1440;
  1025. break;
  1026. case 4:
  1027. while (1) {
  1028. mes "["+ strnpcinfo(1) +"]";
  1029. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  1030. mes " ";
  1031. if ( @tmp_ms_b_m_[2] == 0 )
  1032. mes "Job Limit : ^FF0000<none>^000000";
  1033. else {
  1034. deletearray .@joblimit;
  1035. for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
  1036. if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
  1037. set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
  1038. }
  1039. }
  1040. set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
  1041. for ( set .@i, 1; .@i < getarraysize(.@joblimit); set .@i, .@i +1 )
  1042. set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
  1043. mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
  1044. }
  1045. next;
  1046. set .@menu$, ( ( @tmp_ms_b_m_[2] & pow( 2, 0 ) )?"^00CC00":"^FF0000" )+ .jobname$;
  1047. for ( set .@i, 1; .@i < 24; set .@i,.@i +1 )
  1048. set .@menu$, .@menu$ +":"+( ( @tmp_ms_b_m_[2] & pow( 2, .@i ) )?"^00CC00":"^FF0000" )+ .jobname$[.@i];
  1049. set .@menu$, .@menu$ +":^000000- back";
  1050. set .@menu, select(.@menu$) -1;
  1051. if ( .@menu == 24 ) break;
  1052. set @tmp_ms_b_m_[2], @tmp_ms_b_m_[2] ^ pow( 2, .@menu );
  1053. }
  1054. break;
  1055. case 5:
  1056. }
  1057. if ( .@limitmenu == 5 ) break;
  1058. }
  1059. break;
  1060. case 3:
  1061. while (1) {
  1062. mes "["+ strnpcinfo(1) +"]";
  1063. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  1064. mes " ";
  1065. mes "[Rewards]";
  1066. mes "Base Exp : "+( ( @tmp_ms_b_m_[7] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ):"^FF00000" ) +"^000000";
  1067. mes "Job Exp : "+( ( @tmp_ms_b_m_[8] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ):"^FF00000" ) +"^000000";
  1068. mes "Zeny : "+( ( @tmp_ms_b_m_[9] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ):"^FF00000" ) +"^000000 ";
  1069. mes "Cash Point : "+( ( @tmp_ms_b_m_[10] )?"^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ):"^FF00000" ) +"^000000";
  1070. if ( @tmp_ms_b_ia_ == 0 )
  1071. mes "Item : ";
  1072. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
  1073. mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
  1074. next;
  1075. set .@rewardmenu, select ( "Base Exp", "Job Exp", "Zeny", "Cash Points", "Item Rewards", "- back" );
  1076. switch ( .@rewardmenu ) {
  1077. case 1:
  1078. input @tmp_ms_b_m_[7], 0, 2000000000;
  1079. break;
  1080. case 2:
  1081. input @tmp_ms_b_m_[8], 0, 2000000000;
  1082. break;
  1083. case 3:
  1084. input @tmp_ms_b_m_[9], 0, 2000000000;
  1085. break;
  1086. case 4:
  1087. input @tmp_ms_b_m_[10], 0, 2000000000;
  1088. break;
  1089. case 5:
  1090. while (1) {
  1091. mes "["+ strnpcinfo(1) +"]";
  1092. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  1093. mes " ";
  1094. if ( @tmp_ms_b_ia_ == 0 )
  1095. mes "Item :";
  1096. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
  1097. mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
  1098. next;
  1099. set .@item_reward_menu, select ( "add item reward", "remove an item reward", "- back" );
  1100. switch ( .@item_reward_menu ) {
  1101. case 1:
  1102. mes "["+ strnpcinfo(1) +"]";
  1103. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  1104. mes " ";
  1105. if ( @tmp_ms_b_ia_ == 0 )
  1106. mes "Item : ";
  1107. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
  1108. mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
  1109. mes " ";
  1110. if ( getarraysize(@tmp_ms_b_ia_) == 10 ) {
  1111. mes "only allow up to 5 kinds of items";
  1112. next;
  1113. break;
  1114. }
  1115. mes "input item id for item reward";
  1116. next;
  1117. input .@tmp, 0, 32767;
  1118. mes "["+ strnpcinfo(1) +"]";
  1119. if ( getitemname(.@tmp) == "null" ) {
  1120. mes "invalid item id";
  1121. next;
  1122. break;
  1123. }
  1124. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  1125. mes " ";
  1126. if ( @tmp_ms_b_ia_ == 0 )
  1127. mes "Item : ";
  1128. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
  1129. mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
  1130. mes " ";
  1131. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 ) {
  1132. if ( .@tmp == @tmp_ms_b_ia_[.@i] ) break;
  1133. }
  1134. if ( .@i != getarraysize(@tmp_ms_b_ia_) ) {
  1135. mes "item ^0000FF"+ getitemname(.@tmp) +"^000000 is being repeated";
  1136. next;
  1137. break;
  1138. }
  1139. mes "Item : ^0000FF"+ getitemname(.@tmp) +"^000000";
  1140. mes "input item amount for item reward";
  1141. next;
  1142. input .@tmp2, 0, 30000;
  1143. if ( .@tmp2 == 0 ) {
  1144. mes "["+ strnpcinfo(1) +"]";
  1145. mes "invalid amount";
  1146. next;
  1147. }
  1148. else
  1149. setarray @tmp_ms_b_ia_[ getarraysize(@tmp_ms_b_ia_) ], .@tmp, .@tmp2;
  1150. break;
  1151. case 2:
  1152. mes "["+ strnpcinfo(1) +"]";
  1153. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  1154. mes " ";
  1155. if ( @tmp_ms_b_ia_ == 0 ) {
  1156. mes "there are no item to remove";
  1157. next;
  1158. break;
  1159. }
  1160. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
  1161. mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
  1162. mes " ";
  1163. mes "select an item to delete";
  1164. next;
  1165. set .@menu$, "^0000FF"+ @tmp_ms_b_ia_[1] +" "+ getitemname(@tmp_ms_b_ia_);
  1166. for ( set .@i, 2; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
  1167. set .@menu$, .@menu$ +":"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]);
  1168. set .@menu$, .@menu$ +"^000000:- back";
  1169. set .@menu, select(.@menu$) -1;
  1170. if ( .@menu == getarraysize(@tmp_ms_b_ia_) /2 ) break;
  1171. deletearray @tmp_ms_b_ia_[ .@menu *2 ], 2;
  1172. case 3:
  1173. }
  1174. if ( .@item_reward_menu == 3 ) break;
  1175. }
  1176. case 6:
  1177. }
  1178. if ( .@rewardmenu == 6 ) break;
  1179. }
  1180. break;
  1181. case 4:
  1182. mes "["+ strnpcinfo(1) +"]";
  1183. if ( @tmp_ms_b_m_$[0] != "" && @tmp_ms_b_m_$[1] != "" && ( @tmp_ms_b_t_ || @tmp_ms_b_ir_ ) &&
  1184. ( @tmp_ms_b_m_[7] || @tmp_ms_b_m_[8] || @tmp_ms_b_m_[9] || @tmp_ms_b_m_[10] || @tmp_ms_b_ia_ ) ) {
  1185. mes "mission ID: ^996600"+( ( getarg(0) == 0 )?$ms_b_id +1:@m_id )+"^000000";
  1186. mes "mission name : ^0000FF"+ @tmp_ms_b_m_$[0] +"^000000";
  1187. }
  1188. else {
  1189. mes "mission name : "+( ( @tmp_ms_b_m_$[0] != "" )?"^0000FF"+ @tmp_ms_b_m_$[0]:"^FF0000Incomplete" )+"^000000";
  1190. mes " ";
  1191. mes "some field are still Incomplete !";
  1192. next;
  1193. break;
  1194. }
  1195. mes "Description: ^0000FF"+ @tmp_ms_b_m_$[1] +"^000000";
  1196. mes " ";
  1197. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_t_); set .@i, .@i +2 )
  1198. mes "require mobs : ^0000FF"+ @tmp_ms_b_t_[.@i +1] +" "+ getmonsterinfo(@tmp_ms_b_t_[.@i], 0) +"^000000";
  1199. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ir_); set .@i, .@i +2 )
  1200. mes "require items : ^0000FF"+ @tmp_ms_b_ir_[.@i +1] +" "+ getitemname(@tmp_ms_b_ir_[.@i]) +"^000000";
  1201. mes " ";
  1202. if ( @tmp_ms_b_m_[6] || @tmp_ms_b_m_[3] || @tmp_ms_b_m_[5] || @tmp_ms_b_m_[2] ) {
  1203. mes "[Limitations]";
  1204. if ( @tmp_ms_b_m_[6] )
  1205. mes "Can do : "+( ( @tmp_ms_b_m_[6] == 1 )?"^00CC00Everyday":"^FF0000Only Once" )+"^000000";
  1206. if ( @tmp_ms_b_m_[3] )
  1207. mes "Base Level :"+( ( @tmp_ms_b_m_[3] )?" ^0000FF"+ @tmp_ms_b_m_[3] +( ( @tmp_ms_b_m_[3] != @tmp_ms_b_m_[4] )?"~"+ @tmp_ms_b_m_[4]:"" )+"^000000":"" );
  1208. if ( @tmp_ms_b_m_[5] )
  1209. mes "Time Limit : ^FF0000"+( ( @tmp_ms_b_m_[5] /60 )?@tmp_ms_b_m_[5] /60 +" hour"+( ( @tmp_ms_b_m_[5] %60 )?" ":"" ):"" )+( ( @tmp_ms_b_m_[5] %60 )?@tmp_ms_b_m_[5] %60 +" min":"" )+"^000000";
  1210. if ( @tmp_ms_b_m_[2] ) {
  1211. deletearray .@joblimit;
  1212. for ( set .@i, 0; .@i < 24; set .@i, .@i +1 ) {
  1213. if ( @tmp_ms_b_m_[2] & pow( 2, .@i ) ) {
  1214. set .@joblimit[ getarraysize(.@joblimit) ], .@i +1;
  1215. }
  1216. }
  1217. set .@joblimit$, .jobname$[ .@joblimit[0] -1 ];
  1218. for ( set .@i, 1; .@i < getarraysize(.@joblimit); set .@i, .@i +1 )
  1219. set .@joblimit$, .@joblimit$ +", "+ .jobname$[ .@joblimit[.@i] -1 ];
  1220. mes "Job Limit : ^00CC00"+ .@joblimit$ +"^000000";
  1221. }
  1222. mes " ";
  1223. }
  1224. mes "[Rewards]";
  1225. if ( @tmp_ms_b_m_[7] )
  1226. mes "Base Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[7] ) +"^000000";
  1227. if ( @tmp_ms_b_m_[8] )
  1228. mes "Job Exp : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[8] ) +"^000000";
  1229. if ( @tmp_ms_b_m_[9] )
  1230. mes "Zeny : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[9] ) +"^000000";
  1231. if ( @tmp_ms_b_m_[10] )
  1232. mes "Cash Point : ^0000FF"+ callfunc("int__", @tmp_ms_b_m_[10] ) +"^000000";
  1233. for ( set .@i, 0; .@i < getarraysize(@tmp_ms_b_ia_); set .@i, .@i +2 )
  1234. mes "Item : ^0000FF"+ @tmp_ms_b_ia_[.@i +1] +" "+ getitemname(@tmp_ms_b_ia_[.@i]) +"^000000";
  1235. return 1;
  1236. case 5:
  1237. return 0;
  1238. }
  1239. }
  1240. end;
  1241. OnInit:
  1242. set .loading, 1;
  1243. set .total_npc, .total_npc +1 ;
  1244. if ( atoi( strnpcinfo(2) ) <= 0 || atoi( strnpcinfo(2) ) > 127 ) {
  1245. debugmes "Mission Board: invalid npc id #"+ strnpcinfo(2);
  1246. end;
  1247. }
  1248. else if ( .ms_b_name$[ atoi( strnpcinfo(2) ) ] != "" ) {
  1249. debugmes "Mission Board: duplicate npc id #"+ strnpcinfo(2);
  1250. set .duplicate_id[ getarraysize(.duplicate_id) ], atoi( strnpcinfo(2) );
  1251. end;
  1252. }
  1253. set .ms_b_name$[ atoi( strnpcinfo(2) ) ], strnpcinfo(1);
  1254. set .@tmp$, "|~key~|"; // explode
  1255. set .@str$, .@tmp$ + getd("$ms_b_n_"+ strnpcinfo(2) +"$");
  1256. set .@len, getstrlen( getd("$ms_b_n_"+ strnpcinfo(2) +"$") );
  1257. setarray .@char$, "#", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9";
  1258. set .@s, 0;
  1259. set .@p, 0;
  1260. while ( .@len > .@s ) {
  1261. set .@i, 0;
  1262. while ( .@i < 11 ) {
  1263. if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
  1264. set .@tmp$, .@tmp$ + .@char$[.@i];
  1265. if ( .@i )
  1266. setd ".ms_b_n_"+ strnpcinfo(2) +"["+ .@p +"]", getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@p +"]") + .@char$[.@i];
  1267. else
  1268. set .@p, .@p +1 ;
  1269. break;
  1270. }
  1271. set .@i, .@i +1 ;
  1272. }
  1273. set .@s, .@s +1 ;
  1274. if ( .@p % 10 == 1 ) sleep 1;
  1275. }
  1276. set .@id, 0;
  1277. while ( .@id < getarraysize( getd(".ms_b_n_"+ strnpcinfo(2) ) ) ) {
  1278. sleep 1;
  1279. set .@m_id, getd(".ms_b_n_"+ strnpcinfo(2) +"["+ .@id +"]");
  1280. set .@tmp$, "|~key~|"; // explode
  1281. set .@str$, .@tmp$ + getd("$ms_b_m_"+ .@m_id +"$[2]");
  1282. set .@len, getstrlen( getd("$ms_b_m_"+ .@m_id +"$[2]") );
  1283. set .@s, 0;
  1284. set .@p, 2;
  1285. while ( .@len > .@s ) {
  1286. set .@i, 0;
  1287. while ( .@i < 11 ) {
  1288. if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
  1289. set .@tmp$, .@tmp$ + .@char$[.@i];
  1290. if ( .@i )
  1291. setd ".ms_b_m_"+ .@m_id +"["+ .@p +"]", getd(".ms_b_m_"+ .@m_id +"["+ .@p +"]") + .@char$[.@i];
  1292. else
  1293. set .@p, .@p +1 ;
  1294. break;
  1295. }
  1296. set .@i, .@i +1 ;
  1297. }
  1298. set .@s, .@s +1 ;
  1299. if ( .@p % 8 == 7 ) sleep 1;
  1300. }
  1301. sleep 1;
  1302. set .@tmp$, "|~key~|"; // explode
  1303. set .@str$, .@tmp$ + getd("$ms_b_m_"+ .@m_id +"$[3]");
  1304. set .@len, getstrlen( getd("$ms_b_m_"+ .@m_id +"$[3]") );
  1305. set .@s, 0;
  1306. set .@p, 0;
  1307. while ( .@len > .@s ) {
  1308. set .@i, 0;
  1309. while ( .@i < 11 ) {
  1310. if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
  1311. set .@tmp$, .@tmp$ + .@char$[.@i];
  1312. if ( .@i )
  1313. setd ".ms_b_t_"+ .@m_id +"["+ .@p +"]", getd(".ms_b_t_"+ .@m_id +"["+ .@p +"]") + .@char$[.@i];
  1314. else
  1315. set .@p, .@p +1 ;
  1316. break;
  1317. }
  1318. set .@i, .@i +1 ;
  1319. }
  1320. set .@s, .@s +1 ;
  1321. if ( .@p % 10 == 1 ) sleep 1;
  1322. }
  1323. copyarray getd(".ms_b_ir_"+ .@m_id), getd(".ms_b_t_"+ .@m_id +"[16]"), 10;
  1324. copyarray getd(".ms_b_ia_"+ .@m_id), getd(".ms_b_t_"+ .@m_id +"[26]"), 10;
  1325. deletearray getd(".ms_b_t_"+ .@m_id +"[16]"), 20;
  1326. set .@id, .@id +1 ;
  1327. }
  1328. set .finish, .finish +1;
  1329. if ( .finish == .total_npc ) {
  1330. set .finish, 0;
  1331. set .total_npc, 0;
  1332. set .loading, 0;
  1333. setarray .jobname$, "(Super) Novice","Swordman","Mage","Archer","Acolyte","Merchant","Thief","Knight","Priest","Wizard","Blacksmith","Hunter","Assassin","Crusader","Monk","Sage","Rogue","Alchemist","Bard/Dancer","Taekwon","Star Gladiator","Soul Linker","Gunslinger","Ninja";
  1334. }
  1335. end;
  1336. }
  1337.  
  1338. - script mission -1,{
  1339. OnWhisperGlobal:
  1340. if ( getvariableofnpc( .loading, "ms_b_") == 1 ) {
  1341. dispbottom "Loading Mission Data ......";
  1342. end;
  1343. }
  1344. if ( @ms_b_loading == 1 ) {
  1345. dispbottom "Loading Player Data ......";
  1346. end;
  1347. }
  1348. for ( set .@i, 1; .@i <= 4; set .@i, .@i +1 ) {
  1349. if ( getd("@ms_b_m_"+ .@i) ) {
  1350. if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") == "" ) {
  1351. dispbottom "Mission Board: Your Mission#"+ .@i +" has deleted";
  1352. deletearray getd("@ms_b_m_"+ .@i);
  1353. setd "ms_b_m_"+ .@i +"$", "";
  1354. deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
  1355. }
  1356. else if ( getd("@ms_b_m_"+ .@i +"[1]") && getd("@ms_b_m_"+ .@i +"[1]") <= gettimetick(2) ) {
  1357. dispbottom "Mission #1: "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@i +"[0]") +"$[0]") +" has Time Up";
  1358. deletearray getd("@ms_b_m_"+ .@i);
  1359. setd "ms_b_m_"+ .@i +"$", "";
  1360. deltimer "ms_b_::OnQuest"+ .@i +"TimeUp";
  1361. }
  1362. }
  1363. }
  1364. dispbottom "[Mission Progress]";
  1365. if ( @ms_b_m_1 == 0 && @ms_b_m_2 == 0 && @ms_b_m_3 == 0 && @ms_b_m_4 == 0 ) {
  1366. dispbottom ">> no mission";
  1367. end;
  1368. }
  1369. for ( set .@j, 1; .@j <= 4; set .@j, .@j +1 ) {
  1370. if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
  1371. dispbottom " -----------------------";
  1372. dispbottom " Mission #"+ .@j +": "+ getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]");
  1373. if ( getvariableofnpc( getd(".ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"[5]"), "ms_b_" ) ) {
  1374. set .@left, getd("@ms_b_m_"+ .@j +"[1]") - gettimetick(2);
  1375. set .@hour, .@left / 3600;
  1376. set .@min, .@left % 3600 / 60;
  1377. set .@sec, .@left % 60;
  1378. dispbottom " Time Left: "+( ( .@hour )?.@hour +" hour ":"" )+( ( .@hour || .@min )?.@min +" min ":"" )+ .@sec +" sec";
  1379. }
  1380. if ( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ) {
  1381. dispbottom " Require mobs:";
  1382. for ( set .@i, 0; .@i < getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ); set .@i, .@i +2 )
  1383. dispbottom " "+ getmonsterinfo( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) , 0) +" ["+( ( getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") > getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) )?getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ):getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") ) +"/"+ getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) +"]";
  1384. }
  1385. if ( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ) {
  1386. dispbottom " Require items:";
  1387. for ( set .@i, 0; .@i < getarraysize( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ); set .@i, .@i +2 )
  1388. dispbottom " "+ getitemname( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) +" ["+ countitem( getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) +"/"+ getvariableofnpc( getd(".ms_b_ir_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ (.@i +1) +"]"), "ms_b_" ) +"]";
  1389. }
  1390. }
  1391. }
  1392. dispbottom " -----------------------";
  1393. end;
  1394. OnNPCKillEvent:
  1395. if ( getvariableofnpc( .loading, "ms_b_") == 1 ) end;
  1396. if ( getcharid(1) == 0 ) {
  1397. if ( @ms_b_loading == 1 ) end;
  1398. for ( set .@j, 1; .@j <= 4; set .@j, .@j +1 ) {
  1399. if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
  1400. if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
  1401. dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted";
  1402. deletearray getd("@ms_b_m_"+ .@j);
  1403. setd "ms_b_m_"+ .@j +"$", "";
  1404. deltimer "ms_b_::OnQuest"+ .@j +"TimeUp";
  1405. }
  1406. else {
  1407. for ( set .@i, 0; .@i < getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ); set .@i, .@i +2 ) {
  1408. if ( killedrid == getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) {
  1409. setd "@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]", getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +1;
  1410. setd "ms_b_m_"+ .@j +"$", getd("@ms_b_m_"+ .@j +"[0]") +"#"+( ( getd("@ms_b_m_"+ .@j +"[1]") )?getd("@ms_b_m_"+ .@j +"[1]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[2]") )?getd("@ms_b_m_"+ .@j +"[2]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[3]") )?getd("@ms_b_m_"+ .@j +"[3]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[4]") )?getd("@ms_b_m_"+ .@j +"[4]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[5]") )?getd("@ms_b_m_"+ .@j +"[5]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[6]") )?getd("@ms_b_m_"+ .@j +"[6]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[7]") )?getd("@ms_b_m_"+ .@j +"[7]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[8]") )?getd("@ms_b_m_"+ .@j +"[8]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[9]") )?getd("@ms_b_m_"+ .@j +"[9]"):"" );
  1411. }
  1412. }
  1413. }
  1414. }
  1415. }
  1416. end;
  1417. }
  1418. set .@killedrid, killedrid;
  1419. getmapxy .@map1$, .@x1, .@y1, 0;
  1420. getpartymember getcharid(1), 1;
  1421. getpartymember getcharid(1), 2;
  1422. set .@k, 0;
  1423. while ( .@k < $@partymembercount ) {
  1424. if ( isloggedin( $@partymemberaid[.@k], $@partymembercid[.@k] ) ) {
  1425. attachrid $@partymemberaid[.@k];
  1426. getmapxy .@map2$, .@x2, .@y2, 0;
  1427. if ( @ms_b_loading == 0 && .@map1$ == .@map2$ && distance(.@x1,.@y1,.@x2,.@y2) <= 30 ) {
  1428. set .@j, 1;
  1429. while ( .@j <= 4 ) {
  1430. if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
  1431. if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
  1432. dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted";
  1433. deletearray getd("@ms_b_m_"+ .@j);
  1434. setd "ms_b_m_"+ .@j +"$", "";
  1435. deltimer "ms_b_::OnQuest"+ .@j +"TimeUp";
  1436. }
  1437. else {
  1438. set .@i, 0;
  1439. while ( .@i < getarraysize( getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") ), "ms_b_" ) ) ) {
  1440. if ( .@killedrid == getvariableofnpc( getd(".ms_b_t_"+ getd("@ms_b_m_"+ .@j +"[0]") +"["+ .@i +"]"), "ms_b_" ) ) {
  1441. setd "@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]", getd("@ms_b_m_"+ .@j +"["+( .@i/2 +2 )+"]") +1;
  1442. setd "ms_b_m_"+ .@j +"$", getd("@ms_b_m_"+ .@j +"[0]") +"#"+( ( getd("@ms_b_m_"+ .@j +"[1]") )?getd("@ms_b_m_"+ .@j +"[1]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[2]") )?getd("@ms_b_m_"+ .@j +"[2]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[3]") )?getd("@ms_b_m_"+ .@j +"[3]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[4]") )?getd("@ms_b_m_"+ .@j +"[4]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[5]") )?getd("@ms_b_m_"+ .@j +"[5]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[6]") )?getd("@ms_b_m_"+ .@j +"[6]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[7]") )?getd("@ms_b_m_"+ .@j +"[7]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[8]") )?getd("@ms_b_m_"+ .@j +"[8]"):"" )+"#"+( ( getd("@ms_b_m_"+ .@j +"[9]") )?getd("@ms_b_m_"+ .@j +"[9]"):"" );
  1443. }
  1444. set .@i, .@i +2 ;
  1445. }
  1446. }
  1447. }
  1448. set .@j, .@j +1 ;
  1449. }
  1450. }
  1451. }
  1452. set .@k, .@k +1 ;
  1453. }
  1454. end;
  1455. OnPCLoginEvent:
  1456. set @ms_b_loading, 1;
  1457. set .@j, 1;
  1458. while ( .@j <= 4 ) {
  1459. if ( getd("ms_b_m_"+ .@j +"$") != "" ) {
  1460. set .@tmp$, "|~key~|"; // explode
  1461. set .@str$, .@tmp$ + getd("ms_b_m_"+ .@j +"$");
  1462. set .@len, getstrlen( getd("ms_b_m_"+ .@j +"$") );
  1463. setarray .@char$, "#", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9";
  1464. set .@s, 0;
  1465. set .@p, 0;
  1466. while ( .@len > .@s ) {
  1467. set .@i, 0;
  1468. while ( .@i < 11 ) {
  1469. if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
  1470. set .@tmp$, .@tmp$ + .@char$[.@i];
  1471. if ( .@i )
  1472. setd ".@ms_b_m_"+ .@j +"$["+ .@p +"]", getd(".@ms_b_m_"+ .@j +"$["+ .@p +"]") + .@char$[.@i];
  1473. else
  1474. set .@p, .@p +1 ;
  1475. break;
  1476. }
  1477. set .@i, .@i +1 ;
  1478. }
  1479. set .@s, .@s +1 ;
  1480. if ( .@p == 4 ) sleep2 1;
  1481. }
  1482. setarray getd("@ms_b_m_"+ .@j), getd(".@ms_b_m_"+ .@j +"$[0]"), getd(".@ms_b_m_"+ .@j +"$[1]"), getd(".@ms_b_m_"+ .@j +"$[2]"), getd(".@ms_b_m_"+ .@j +"$[3]"), getd(".@ms_b_m_"+ .@j +"$[4]"), getd(".@ms_b_m_"+ .@j +"$[5]"), getd(".@ms_b_m_"+ .@j +"$[6]"), getd(".@ms_b_m_"+ .@j +"$[7]"), getd(".@ms_b_m_"+ .@j +"$[8]"), getd(".@ms_b_m_"+ .@j +"$[9]");
  1483. sleep2 1;
  1484. }
  1485. set .@j, .@j +1 ;
  1486. }
  1487. while ( .@npc_id < 128 ) {
  1488. if ( getvariableofnpc( .ms_b_name$[.@npc_id], "ms_b_" ) != "" ) {
  1489. set .@tmp$, "|~key~|"; // explode
  1490. set .@str$, .@tmp$ + getd("ms_b_n_"+ .@npc_id +"$");
  1491. set .@len, getstrlen( getd("ms_b_n_"+ .@npc_id +"$") );
  1492. setarray .@char$, "#", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9";
  1493. set .@s, 0;
  1494. set .@p, 0;
  1495. while ( .@len > .@s ) {
  1496. set .@i, 0;
  1497. while ( .@i < 11 ) {
  1498. if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) {
  1499. set .@tmp$, .@tmp$ + .@char$[.@i];
  1500. if ( .@i )
  1501. setd "@ms_b_n_"+ .@npc_id +"["+ .@p +"]", getd("@ms_b_n_"+ .@npc_id +"["+ .@p +"]") + .@char$[.@i];
  1502. else
  1503. set .@p, .@p +1 ;
  1504. break;
  1505. }
  1506. set .@i, .@i +1 ;
  1507. }
  1508. set .@s, .@s +1 ;
  1509. if ( .@p % 10 == 1 ) sleep2 1;
  1510. }
  1511. sleep2 1;
  1512. }
  1513. set .@npc_id, .@npc_id +1 ;
  1514. }
  1515. set @ms_b_loading, 0;
  1516. if ( getvariableofnpc( .loading, "ms_b_" ) == 0 ) {
  1517. set .@j, 1;
  1518. while ( .@j <= 4 ) {
  1519. if ( getd("@ms_b_m_"+ .@j +"[0]") ) {
  1520. if ( getd("$ms_b_m_"+ getd("@ms_b_m_"+ .@j +"[0]") +"$[0]") == "" ) {
  1521. dispbottom "Mission Board: Your Mission#"+ .@j +" has deleted";
  1522. deletearray getd("@ms_b_m_"+ .@j);
  1523. setd "ms_b_m_"+ .@j +"$", "";
  1524. }
  1525. else if ( getd("@ms_b_m_"+ .@j +"[1]") ) {
  1526. if ( getd("@ms_b_m_"+ .@j +"[1]") > gettimetick(2) )
  1527. addtimer ( getd("@ms_b_m_"+ .@j +"[1]") - gettimetick(2) ) *1000, "ms_b_::OnQuest"+ .@j +"TimeUp";
  1528. else
  1529. doevent "ms_b_::OnQuest"+ .@j +"TimeUp";
  1530. }
  1531. }
  1532. set .@j, .@j +1 ;
  1533. }
  1534. }
  1535. end;
  1536. }
  1537.  
  1538. // add more missions by duplicates here
  1539. // you can use any name, but the hidden name #1 #2 #35 whatever must be within #1 ~ #126
  1540. // and remember your display npc name plus the hidden name must not more than 23 characters
  1541.  
  1542. prontera,164,219,4 duplicate(ms_b_) Prontera mission#9 113
  1543. //morocc,160,97,5 duplicate(ms_b_) Morocc mission#10 113
  1544. //geffen,121,56,56 duplicate(ms_b_) Geffen mission#11 113
  1545. //payon,168,67,5 duplicate(ms_b_) Payon mission#12 113
  1546. //alberta,122,59,5 duplicate(ms_b_) Alberta mission#13 113
  1547. //izlude,116,125,5 duplicate(ms_b_) Izlude mission#14 113
  1548. //aldebaran,145,108,5 duplicate(ms_b_) Aldebaran mission#15 113
  1549. //xmas,154,131,5 duplicate(ms_b_) Lutie mission#16 113
  1550. //comodo,189,145,5 duplicate(ms_b_) Comodo mission#17 113
  1551. //yuno,137,173,5 duplicate(ms_b_) Yuno mission#18 113
  1552. //amatsu,190,108,5 duplicate(ms_b_) Amatsu mission#19 113
  1553. //gonryun,152,113,5 duplicate(ms_b_) Gonryun mission#20 113
  1554. //umbala,118,130,5 duplicate(ms_b_) Umbala mission#21 113
  1555. //louyang,208,101,5 duplicate(ms_b_) Louyang mission#22 113
  1556. //ayothaya,157,171,5 duplicate(ms_b_) Ayothaya mission#23 113
  1557. //einbroch,68,196,5 duplicate(ms_b_) Einbroch mission#24 113
  1558. //lighthalzen,154,106,5 duplicate(ms_b_) Lighthalzen mission#25 113
  1559. //hugel,102,152,5 duplicate(ms_b_) Hugel mission#26 113
  1560. //rachel,119,146,5 duplicate(ms_b_) Rachel mission#27 113
  1561. //veins,221,128,5 duplicate(ms_b_) Veins mission#28 113
  1562. //bat_b01,305,176,5 duplicate(ms_b_) Olympus mission#29 113
  1563. //bat_b01,316,175,5 duplicate(ms_b_) Easy mission#30 113
  1564. //bat_b01,307,175,5 duplicate(ms_b_) Medium mission#31 113
  1565. //bat_b01,310,175,5 duplicate(ms_b_) Hard mission#32 113
  1566. //bat_b01,320,175,5 duplicate(ms_b_) Expert mission#33 113
  1567. //einbech,80,103,5 duplicate(ms_b_) Einbech Mission#34 113
  1568. //jawaii,214,237,5 duplicate(ms_b_) Jawaii Mission#35 113
  1569. //moscovia,157,58,5 duplicate(ms_b_) Moscovia Mission#36 113
  1570. //nameless_n,253,213,5 duplicate(ms_b_) Nameless Mission#37 113
  1571. //niflheim,77,153,5 duplicate(ms_b_) Niflheim Mission#38 113
  1572. //thor_camp,257,87,5 duplicate(ms_b_) Thor Champ Mission#39 113
  1573. //mid_camp,206,282,5 duplicate(ms_b_) Mid Champ Mission#40 113
  1574. //manuk,267,173,5 duplicate(ms_b_) Manuk Mission#41 113
  1575. //splendide,193,152,5 duplicate(ms_b_) Splendide Mission#42 113
  1576. //brasilis,192,214,5 duplicate(ms_b_) Brasilis Mission#43 113
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement