Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.87 KB | None | 0 0
  1. /*================================================
  2. - Design Project : Infinity Dojo.
  3. - Design Date : 2015-11-21
  4. - Modified Date : 2018-03-10
  5. - Version : 1.1
  6. - Contact Method : RC : rariwork & Line : @fij3590v
  7. - Script Classification : Instance Class.
  8. - Support : rAthena
  9. - Update Content :
  10. - Ver 1.0 Infrastructure Complete. 1121
  11. - Ver 1.1 Optimize the overall structure. 0727
  12. ==================================================
  13. >>>各位大哥大姐請勿轉載,萬分感激。<<<
  14. ===================================================*/
  15.  
  16. prontera,131,112,3 script 無限道館報名 10191,{
  17.  
  18. mes "[ 副本報名人員 ]";
  19. mes "^0000FF登記中,請稍後!^000000";
  20. close2;
  21. getpartymember(getcharid(1));
  22. if(!getcharid(1) ){
  23. mes "[ 副本報名人員 ]";
  24. mes "^ff0000登記失敗,請加入一個隊伍再來登記吧。^000000";
  25. close;
  26. }
  27. if (getcharid(0) != getpartyleader(getcharid(1),2)) {
  28. mes "[ 副本報名人員 ]";
  29. mes "^FF0000登記失敗,只有隊長才可以登記。^000000";
  30. close;
  31. }
  32. callfunc "PartyIPCheck";
  33. setd "$@leader"+getcharid(1),getcharid(3);
  34. getpartymember(getcharid(1));
  35. getpartymember(getcharid(1),2);
  36. set @partyst,0;
  37. set @partymembercount,$@partymembercount;
  38. copyarray .@partymemberaid[0],$@partymemberaid[0],@partymembercount;
  39. copyarray .@partymembername$[0],$@partymembername$[0],@partymembercount;
  40. for(set .@i,0;.@i<@partymembercount;set .@i,.@i+1) {
  41. if(!getmapxy(.@map$,.@x,.@y,0,.@partymembername$[.@i])) {
  42. attachrid .@partymemberaid[.@i];
  43. if( BaseLevel < 99 ) {
  44. mes "[ 副本報名人員 ]";
  45. mes "^FF0000登記失敗,隊伍內有玩家等級未達規定!^000000";
  46. close;
  47. }
  48. if(gettimetick(2)-Infinite<1800){
  49. mes "[ 副本報名人員 ]";
  50. mes "^FF0000登記失敗,隊伍內有玩家冷卻時間未殆盡。^000000";
  51. close;
  52. }
  53. {
  54. attachrid getd("$@leader"+getcharid(1));
  55. set @partyst,1;
  56. }
  57. attachrid getd("$@leader"+getcharid(1));
  58. }
  59. }
  60. mes "[ 副本報名人員 ]";
  61. mes "^FF0000登記成功,您已符合副本需求!^000000";
  62. next;
  63. if ( select("^0000FF開始挑戰^000000")==1) {
  64. instance_create("無限道館");
  65. instance_enter("無限道館");
  66. setd "$@leader"+getcharid(1),getcharid(3);
  67. getpartymember(getcharid(1));
  68. getpartymember(getcharid(1),2);
  69. set @partyst,0;
  70. set @partymembercount,$@partymembercount;
  71. copyarray .@partymemberaid[0],$@partymemberaid[0],@partymembercount;
  72. copyarray .@partymembername$[0],$@partymembername$[0],@partymembercount;
  73. for(set .@i,0;.@i<@partymembercount;set .@i,.@i+1) {
  74. if(!getmapxy(.@map$,.@x,.@y,0,.@partymembername$[.@i])) {
  75. attachrid .@partymemberaid[.@i];
  76. set Infinite,gettimetick(2);
  77. warp instance_mapname("4@guild"),49,45;
  78. {
  79. attachrid getd("$@leader"+getcharid(1));
  80. set @partyst,1;
  81. }
  82. attachrid getd("$@leader"+getcharid(1));
  83. }
  84. }
  85. }
  86. end;
  87. }
  88.  
  89. 4@guild,49,49,4 script 道館人員#4 4_M_BARMUND,{
  90. setarray 'Mvp[1],
  91. 1147,1087,1086,1115,1038,1159,
  92. 1389,1046,1059,1150,1039,1157,
  93. 1112,1251,1373,1272,1630,1885,
  94. 1518,1252,1492,1623,1418,1312,
  95. 1583,1708; // MVPID
  96. set 'MvpNum,26; // MVP總數
  97. if('GameOpen==1){
  98. mes "[道館人員]";
  99. mes "^FF0000挑戰已經開始了。^000000";
  100. close;
  101. }
  102. if ( getcharid(0) != getpartyleader(getcharid(1),2) ) {
  103. mes "[道館人員]";
  104. mes "^FF0000請隊長跟我說話。^000000";
  105. close;
  106. }
  107. mes "[道館人員]";
  108. mes "^00A5B4無限關卡!^000000";
  109. mes "準備好要挑戰了嗎?";
  110. next;
  111. if ( select("稍後挑戰:^FF0000開始挑戰^000000")==1) { close; }
  112. close2;
  113. set 'GameOpen,1;
  114. set $vote1$,"離開副本";
  115. instance_announce 0,"道館人員 : 在聊天頻道輸入【離開副本】.即可結束副本.",bc_map,0xFFE100;
  116. sleep2 2000;
  117. instance_announce 0,"道館人員 : 必須在我的視線範圍附近喊出【離開副本】才會觸發離開!。",bc_map,0xFFE100;
  118. sleep2 2000;
  119. instance_announce 0,"道館人員 : 所有人都可以輸入,請玩家注意言詞使用,5 秒後挑戰即將開始。",bc_map,0xFFE100;
  120. sleep2 5000;
  121. doevent instance_npcname("道館系統")+"::Onbosskill";
  122. defpattern 1, "([^:]+):\\s"+$vote1$+".*", "Ondoing";
  123. activatepset 1;
  124. 'partymembercount = $@partymembercount;
  125. hideonnpc instance_npcname(strnpcinfo(0));
  126. end;
  127. Ondoing:
  128. instance_announce 0,"[系統] - 結束副本 , 2 秒後自動傳送出去副本.",bc_map,0xFFE100;
  129. sleep2 2000;
  130. instance_warpall "prontera",200,129;
  131. instance_destroy(instance_id());
  132. end;
  133. }
  134.  
  135. 4@guild,0,0,0 script 道館系統 HIDDEN_NPC,{
  136. Onbosskill:
  137. set .@mobcount,mobcount(strnpcinfo(4),instance_npcname(strnpcinfo(0))+"::Onbosskill");
  138. if(.@mobcount > 0) {
  139. announce "道館裁判 : 還剩下 [ "+.@mobcount+" ] 隻怪物",17;
  140. end;
  141. } else {
  142. if ( 'round == 10 && 'givechoose != 10 ){
  143. addrid(5,0,strnpcinfo(4));
  144. mapannounce instance_mapname("4@guild"),"10 秒後領獎階段.",bc_map,"0x00FFFF";
  145. sleep2 5000;
  146. atcommand "@option 0 0 "+((checkoption(8)*8)|(checkoption(16)*16)|(checkoption(32)*32)|(checkoption(128)*128)|(checkoption(256)*256)|(checkoption(512)*512)|(checkoption(1024)*1024));
  147. sleep2 5000;
  148. 'player = getmapusers(instance_mapname("4@guild"));
  149. callsub Ongiveitem,10;
  150. }
  151. if ( 'round == 20 && 'givechoose != 20 ){
  152. addrid(5,0,strnpcinfo(4));
  153. mapannounce instance_mapname("4@guild"),"10 秒後領獎階段.",bc_map,"0x00FFFF";
  154. sleep2 5000;
  155. atcommand "@option 0 0 "+((checkoption(8)*8)|(checkoption(16)*16)|(checkoption(32)*32)|(checkoption(128)*128)|(checkoption(256)*256)|(checkoption(512)*512)|(checkoption(1024)*1024));
  156. sleep2 5000;
  157. 'player = getmapusers(instance_mapname("4@guild"));
  158. callsub Ongiveitem,20;
  159. }
  160. if ( 'round == 30 && 'givechoose != 30 ){
  161. addrid(5,0,strnpcinfo(4));
  162. mapannounce instance_mapname("4@guild"),"10 秒後領獎階段.",bc_map,"0x00FFFF";
  163. sleep2 5000;
  164. atcommand "@option 0 0 "+((checkoption(8)*8)|(checkoption(16)*16)|(checkoption(32)*32)|(checkoption(128)*128)|(checkoption(256)*256)|(checkoption(512)*512)|(checkoption(1024)*1024));
  165. sleep2 5000;
  166. 'player = getmapusers(instance_mapname("4@guild"));
  167. callsub Ongiveitem,30;
  168. }
  169. if ( 'round == 40 && 'givechoose != 40 ){
  170. addrid(5,0,strnpcinfo(4));
  171. mapannounce instance_mapname("4@guild"),"10 秒後領獎階段.",bc_map,"0x00FFFF";
  172. sleep2 5000;
  173. atcommand "@option 0 0 "+((checkoption(8)*8)|(checkoption(16)*16)|(checkoption(32)*32)|(checkoption(128)*128)|(checkoption(256)*256)|(checkoption(512)*512)|(checkoption(1024)*1024));
  174. sleep2 5000;
  175. 'player = getmapusers(instance_mapname("4@guild"));
  176. callsub Ongiveitem,40;
  177. }
  178. if ( 'round == 50 && 'givechoose != 50 ){
  179. addrid(5,0,strnpcinfo(4));
  180. mapannounce instance_mapname("4@guild"),"10 秒後領獎階段.",bc_map,"0x00FFFF";
  181. sleep2 5000;
  182. atcommand "@option 0 0 "+((checkoption(8)*8)|(checkoption(16)*16)|(checkoption(32)*32)|(checkoption(128)*128)|(checkoption(256)*256)|(checkoption(512)*512)|(checkoption(1024)*1024));
  183. sleep2 5000;
  184. 'player = getmapusers(instance_mapname("4@guild"));
  185. callsub Ongiveitem,50;
  186. }
  187. if ( 'round == 60 && 'givechoose != 60 ){
  188. addrid(5,0,strnpcinfo(4));
  189. mapannounce instance_mapname("4@guild"),"10 秒後領獎階段.",bc_map,"0x00FFFF";
  190. sleep2 5000;
  191. atcommand "@option 0 0 "+((checkoption(8)*8)|(checkoption(16)*16)|(checkoption(32)*32)|(checkoption(128)*128)|(checkoption(256)*256)|(checkoption(512)*512)|(checkoption(1024)*1024));
  192. sleep2 5000;
  193. 'player = getmapusers(instance_mapname("4@guild"));
  194. callsub Ongiveitem,60;
  195. }
  196. if ( 'round == 70 && 'givechoose != 70 ){
  197. addrid(5,0,strnpcinfo(4));
  198. mapannounce instance_mapname("4@guild"),"10 秒後領獎階段.",bc_map,"0x00FFFF";
  199. sleep2 5000;
  200. atcommand "@option 0 0 "+((checkoption(8)*8)|(checkoption(16)*16)|(checkoption(32)*32)|(checkoption(128)*128)|(checkoption(256)*256)|(checkoption(512)*512)|(checkoption(1024)*1024));
  201. sleep2 5000;
  202. 'player = getmapusers(instance_mapname("4@guild"));
  203. callsub Ongiveitem,70;
  204. }
  205. if ( 'round == 80 && 'givechoose != 80 ){
  206. addrid(5,0,strnpcinfo(4));
  207. mapannounce instance_mapname("4@guild"),"10 秒後領獎階段.",bc_map,"0x00FFFF";
  208. sleep2 5000;
  209. atcommand "@option 0 0 "+((checkoption(8)*8)|(checkoption(16)*16)|(checkoption(32)*32)|(checkoption(128)*128)|(checkoption(256)*256)|(checkoption(512)*512)|(checkoption(1024)*1024));
  210. sleep2 5000;
  211. 'player = getmapusers(instance_mapname("4@guild"));
  212. callsub Ongiveitem,80;
  213. }
  214. if ( 'round == 90 && 'givechoose != 90 ){
  215. addrid(5,0,strnpcinfo(4));
  216. mapannounce instance_mapname("4@guild"),"10 秒後領獎階段.",bc_map,"0x00FFFF";
  217. sleep2 5000;
  218. atcommand "@option 0 0 "+((checkoption(8)*8)|(checkoption(16)*16)|(checkoption(32)*32)|(checkoption(128)*128)|(checkoption(256)*256)|(checkoption(512)*512)|(checkoption(1024)*1024));
  219. sleep2 5000;
  220. 'player = getmapusers(instance_mapname("4@guild"));
  221. callsub Ongiveitem,90;
  222. }
  223. if ( 'round == 100 && 'givechoose != 100 ){
  224. addrid(5,0,strnpcinfo(4));
  225. mapannounce instance_mapname("4@guild"),"10 秒後領獎階段.",bc_map,"0x00FFFF";
  226. sleep2 5000;
  227. atcommand "@option 0 0 "+((checkoption(8)*8)|(checkoption(16)*16)|(checkoption(32)*32)|(checkoption(128)*128)|(checkoption(256)*256)|(checkoption(512)*512)|(checkoption(1024)*1024));
  228. sleep2 5000;
  229. 'player = getmapusers(instance_mapname("4@guild"));
  230. callsub Ongiveitem,100;
  231. }
  232. if ( 'round > 30 && 'round < 61 ){
  233. setarray 'Mvp[1],2068,2156,1708,1785,2022,2202,1734,1685,1719,1871,1768,2087,1751,1874,1917; // MVPID
  234. set 'MvpNum,15; // MVP總數
  235. }
  236. if ( 'round > 60 && 'round < 81 ){
  237. setarray 'Mvp[1],1646,1647,1648,1649,1650,1651,1956,1874,1916,1832; // MVPID
  238. set 'MvpNum,10; // MVP總數
  239. }
  240. if ( 'round > 80 ){
  241. setarray 'Mvp[1],2235,2236,2237,2238,2239,2240,2241,1874,1916; // MVPID
  242. set 'MvpNum,9; // MVP總數
  243. }
  244. set 'round,'round+1;
  245. if ( 'round == 10 || 'round == 20 || 'round == 30 || 'round == 40 || 'round == 50 || 'round == 60 || 'round == 70 || 'round == 80 || 'round == 90 || 'round == 100 ){
  246. set 'instancemap$,instance_mapname("4@guild");
  247. mapannounce instance_mapname("4@guild"),"接下來將要挑戰第 "+'round+" 關 , 加油!.",bc_map,"0x00FFFF";
  248. sleep2 2000;
  249. // 第一隻
  250. set 'ModF,rand(1,'MvpNum);
  251. set 'hp['ModF], getmonsterinfo('Mvp['ModF],MOB_MAXHP);
  252. set 'ATK1['ModF],getmonsterinfo('Mvp['ModF],MOB_ATK1);
  253. set 'ATK2['ModF],getmonsterinfo('Mvp['ModF],MOB_ATK2);
  254. monster(instance_mapname("4@guild"),49,49,"--ja--",'Mvp['ModF],1,instance_npcname("道館系統")+"::Onbosskill");
  255. 'skillunit = $@mobid[0];
  256. if ( 'round >= 10 ){
  257. setunitdata 'skillunit,UMOB_MAXHP,'hp['ModF]*('round/10);
  258. setunitdata 'skillunit,UMOB_HP,'hp['ModF]*('round/10);
  259. setunitdata 'skillunit,UMOB_ATKMIN,'ATK1['ModF]*('round/10);
  260. setunitdata 'skillunit,UMOB_ATKMAX,'ATK2['ModF]*('round/10);
  261. }
  262. // 第二隻
  263. set 'ModF,rand(1,'MvpNum);
  264. set 'hp['ModF], getmonsterinfo('Mvp['ModF],MOB_MAXHP);
  265. set 'ATK1['ModF],getmonsterinfo('Mvp['ModF],MOB_ATK1);
  266. set 'ATK2['ModF],getmonsterinfo('Mvp['ModF],MOB_ATK2);
  267. monster(instance_mapname("4@guild"),49,49,"--ja--",'Mvp['ModF],1,instance_npcname("道館系統")+"::Onbosskill");
  268. 'skillunit = $@mobid[0];
  269. if ( 'round >= 10 ){
  270. setunitdata 'skillunit,UMOB_MAXHP,'hp['ModF]*('round/10);
  271. setunitdata 'skillunit,UMOB_HP,'hp['ModF]*('round/10);
  272. setunitdata 'skillunit,UMOB_ATKMIN,'ATK1['ModF]*('round/10);
  273. setunitdata 'skillunit,UMOB_ATKMAX,'ATK2['ModF]*('round/10);
  274. }
  275. end;
  276. }
  277. set 'instancemap$,instance_mapname("4@guild");
  278. mapannounce instance_mapname("4@guild"),"接下來將要挑戰第 "+'round+" 關 , 加油!.",bc_map,"0x00FFFF";
  279. sleep2 2000;
  280. set 'ModF,rand(1,'MvpNum);
  281. set 'hp['ModF], getmonsterinfo('Mvp['ModF],MOB_MAXHP);
  282. set 'ATK1['ModF],getmonsterinfo('Mvp['ModF],MOB_ATK1);
  283. set 'ATK2['ModF],getmonsterinfo('Mvp['ModF],MOB_ATK2);
  284. monster(instance_mapname("4@guild"),49,49,"--ja--",'Mvp['ModF],1,instance_npcname("道館系統")+"::Onbosskill");
  285. 'skillunit = $@mobid[0];
  286. if ( 'round >= 10 )
  287. setunitdata 'skillunit,UMOB_MAXHP,'hp['ModF]*('round/10);
  288. setunitdata 'skillunit,UMOB_HP,'hp['ModF]*('round/10);
  289. setunitdata 'skillunit,UMOB_ATKMIN,'ATK1['ModF]*('round/10);
  290. setunitdata 'skillunit,UMOB_ATKMAX,'ATK2['ModF]*('round/10);
  291. }
  292. end;
  293. Ongiveitem:
  294. .@level = getarg(0);
  295. switch(.@level){
  296. case 10:
  297. setarray .@item[1],40001,40011,40021,40031,40041,40051;
  298. setarray .@num[1],1,1,1,1,1,1;
  299. 'givechoose = 10;
  300. break;
  301. case 20:
  302. setarray .@item[1],40002,40012,40022,40032,40042,40052;
  303. setarray .@num[1],1,1,1,1,1,1;
  304. 'givechoose = 20;
  305. break;
  306. case 30:
  307. setarray .@item[1],40003,40013,40023,40033,40043,40053;
  308. setarray .@num[1],1,1,1,1,1,1;
  309. 'givechoose = 30;
  310. break;
  311. case 40:
  312. setarray .@item[1],40004,40014,40024,40034,40044,40054;
  313. setarray .@num[1],1,1,1,1,1,1;
  314. 'givechoose = 40;
  315. break;
  316. case 50:
  317. setarray .@item[1],40005,40015,40025,40035,40045,40055;
  318. setarray .@num[1],1,1,1,1,1,1;
  319. 'givechoose = 50;
  320. break;
  321. case 60:
  322. setarray .@item[1],40006,40016,40026,40036,40046,40056;
  323. setarray .@num[1],1,1,1,1,1,1;
  324. 'givechoose = 60;
  325. break;
  326. case 70:
  327. setarray .@item[1],40007,40017,40027,40037,40047,40057;
  328. setarray .@num[1],1,1,1,1,1,1;
  329. 'givechoose = 70;
  330. break;
  331. case 80:
  332. setarray .@item[1],40008,40018,40028,40038,40048,40058;
  333. setarray .@num[1],1,1,1,1,1,1;
  334. 'givechoose = 80;
  335. break;
  336. case 90:
  337. setarray .@item[1],40009,40019,40029,40039,40049,40059;
  338. setarray .@num[1],1,1,1,1,1,1;
  339. 'givechoose = 90;
  340. break;
  341. case 100:
  342. setarray .@item[1],40010,40020,40030,40040,40050,40060;
  343. setarray .@num[1],1,1,1,1,1,1;
  344. 'givechoose = 100;
  345. break;
  346. }
  347. switch(select("[ 領取 ] - "+getitemname(.@item[1])+" x "+.@num[1]+":[ 領取 ] - "+getitemname(.@item[2])+" x "+.@num[2]+":[ 領取 ] - "+getitemname(.@item[3])+" x "+.@num[3]+":[ 領取 ] - "+getitemname(.@item[4])+" x "+.@num[4]+":[ 領取 ] - "+getitemname(.@item[5])+" x "+.@num[5]+":[ 領取 ] - "+getitemname(.@item[6])+" x "+.@num[6]+"")){
  348. case 1:
  349. .@give = 1;
  350. break;
  351. case 2:
  352. .@give = 2;
  353. break;
  354. case 3:
  355. .@give = 3;
  356. break;
  357. case 4:
  358. .@give = 4;
  359. break;
  360. case 5:
  361. .@give = 5;
  362. break;
  363. case 6:
  364. .@give = 6;
  365. break;
  366. }
  367. getitem .@item[.@give],.@num[.@give];
  368. 'giv += 1;
  369. if ( 'player == 'giv ){
  370. addtimer 20000,instance_npcname(strnpcinfo(0))+"::Onbosskill";
  371. mapannounce instance_mapname("4@guild"),"休息 20 秒後後開始",bc_map,"0x00FFFF";
  372. 'giv = 0;
  373. }
  374. end;
  375. }
  376.  
  377. 4@guild mapflag restricted 8
  378. 4@guild mapflag noloot
  379. 4@guild mapflag nomemo
  380. 4@guild mapflag noteleport
  381. 4@guild mapflag noexp
  382. 4@guild mapflag partylock
  383. 4@guild mapflag monster_noteleport
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement