Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.35 KB | None | 0 0
  1. /*=======================================================================================================================
  2. - 腳本名稱:新守護女神
  3. - 腳本作者:極限RO工作組
  4. - 測試環境:Rathena
  5. - 腳本說明:
  6.  
  7. - 守護女神死亡後 三秒後傳送出場
  8. - 打完設定的怪物ID後 為通關 然後會出現寶箱
  9.  
  10. - 注意事項: 腳本僅供,程式語言研究,學術研究用途
  11. =========================================================================================================================*/
  12. prontera,145,112,4 script 守護女神 403,{
  13.  
  14. .@qlv=130; //要求等級
  15. .@pcs=1; //要求人數
  16. .@time=1; //冷卻時間
  17. .@quid=70005; //任務 ID
  18. .@map$="1@guar"; //副本地圖
  19. .@idb$="守護女神"; //副本名稱
  20. .@pid=getcharid(1); //隊伍的ID
  21. .@team$=getpartyleader(getcharid(1)); //隊長名稱
  22.  
  23. mes "選擇副本: ^0000ff"+.@idb$+"^000000";
  24. mes "要求等級: ^0000ff"+.@qlv+"^000000";
  25. mes "至少人數: ^0000ff"+.@pcs+"^000000";
  26. .@play=checkquest(.@quid);
  27.  
  28. //斜線 case 0 or case 1 = 不檢查 是否冷卻中
  29.  
  30. switch(.@play){
  31. //case 0: goto notime;
  32. //case 1: goto notime;
  33. case 2: erasequest .@quid; break;
  34. }
  35.  
  36.  
  37. set .@kwin,query_sql ("Select win From instances_time Where pid = "+getcharid(1)+"",.@swin);
  38.  
  39. do {
  40. if(getcharid(0) == getpartyleader(.@pid,2)) set .@select,select("申請副本:進入副本:銷毀副本:結束對話");
  41. else set .@select,select(":進入副本::結束對話");
  42.  
  43.  
  44. switch(.@select){
  45. case 1:
  46. if (instance_create(.@idb$) < 0) {
  47. mes "^7100DC一個隊伍 最多只能 申請一個副本^000000";
  48. break;
  49. }
  50. query_sql "DELETE FROM `instances_time` WHERE pid = "+getcharid(1)+"";
  51. query_sql "INSERT INTO `instances_time` ( pid,pname,team,win,time ) VALUES ( "+getcharid(1)+", '"+strcharinfo(1)+"', '"+strcharinfo(0)+"', '0', "+gettimetick(2)+")";
  52. mes "^f74300副本申請成功^000000";
  53. set .@kwin,query_sql ("Select win From instances_time Where pid = "+getcharid(1)+"",.@swin);
  54. break;
  55.  
  56.  
  57. case 2:
  58. if(.@kwin) if(.@swin){ mes "^FF0000副本已通關 無法進入^000000"; close; }
  59.  
  60. switch(instance_enter(.@idb$)) {
  61. case 0:
  62. getmapxy(.@map$,.@x,.@y,0);
  63. mapannounce instance_mapname(""+.@map$+""),"隊伍: "+getpartyname(.@pid)+" 的 成員: "+strcharinfo(0)+" 開始挑戰 "+.@idb$+" 副本",bc_map,"0x00ff99";
  64. if (checkquest(.@quid) == -1) setquest .@quid;
  65. break;
  66. case 1:
  67. mes "沒有找到隊伍";
  68. mes "請重新組隊 再過來申請 此副本";
  69. break;
  70.  
  71. case 2:
  72. mes "^FF0000尚未申請 無法進入^000000";
  73. break;
  74. case 3:
  75. mes "無效副本名 副本和組隊 不匹配";
  76. mes "請重新組隊 再過來申請 此副本";
  77. break;
  78. }//case 2 switch end;
  79. close;
  80.  
  81. case 3:
  82. mes "^7100DC試圖銷毀副本^000000";
  83. instance_destroy;
  84. break;
  85.  
  86. case 4: break;
  87. }// switch(.@select) switch end;
  88.  
  89. } while(.@select==1);
  90. close;
  91.  
  92.  
  93.  
  94.  
  95. notime:
  96. mes "^7100DC副本冷卻中^000000";
  97. set .@qaz,query_sql("SELECT `time` From `quest` WHERE `char_id` = "+getcharid(0)+" AND `quest_id` = "+getcharid(0)+"", .@sqltime);
  98. set .@time,.@sqltime - gettimetick(2);
  99. mes "冷卻時間:";
  100. mes "^FF0000"+.@time/86400+"^000000 日 ^FF0000"+(.@time/3600)%24+"^000000 時 ^FF0000"+(.@time/60)%60+"^000000 分 ^FF0000"+.@time%60+"^000000 秒";
  101. close;
  102.  
  103.  
  104. nolv:
  105. mes "^FF0000等級不足^000000";
  106. mes "您目前的 基本等級 ^0000FF"+BaseLevel+" 級^000000";
  107. mes "基本等級 至少達到 ^FF0000"+.@qlv+" 級^000000";
  108. close;
  109.  
  110. noweight:
  111. mes "目前狀態: ^FF0000負重量 大於 80%^000000";
  112. mes "身上背著太多的重量";
  113. mes "減輕了負重量後回來";
  114. close;
  115.  
  116. nopeople:
  117. mes "^FF0000當前隊伍人數不足^000000";
  118. mes "要求隊伍人數: ^FF0000"+.@pcs+"^000000 以上";
  119. close;
  120.  
  121. nopid:
  122. mes "^FF0000沒有隊伍 無法進行副本^000000";
  123. mes "要求隊伍人數: ^FF0000"+.@pcs+"^000000 以上";
  124. close;
  125.  
  126. nozeny:
  127. mes "^FF0000金錢不足^000000";
  128. mes "身上金錢: ^0000FF"+Zeny+"^000000";
  129. mes "所需費用: ^0000FF"+(.@zeny/10000)+"萬^000000";
  130. close;
  131.  
  132.  
  133.  
  134.  
  135. OnInit:
  136. waitingroom " "+strnpcinfo(0)+"",0;
  137. end;
  138. }
  139.  
  140.  
  141. 1@guar,76,63,4 script 守護女神#副本 403,{
  142.  
  143.  
  144. if(getpartyleader(getcharid(1),2) != getcharid(0)) end;
  145. mes "[規則說明]";
  146. mes "^0000FF一直保護女神到最大關卡^000000";
  147. mes "^0000FF消滅每關所有出現的怪物^000000";
  148. mes " ";
  149. mes "^FF0000女神死亡的話將挑戰失敗^000000";
  150. if(select("開始挑戰","在等一下")==2) close;
  151. close2;
  152. set 'pid,getcharid(1);
  153. set 'mpcs,0;
  154. set 'mvpgg,0;
  155. set 'sysfor,5;
  156. set 'gp_item,0;
  157. set 'my_level,1;
  158. set 'map$,instance_mapname("1@guar");
  159. set 'bg1,bg_monster(1,'map$,76,63,"--ja--",3991,instance_npcname(strnpcinfo(0))+"::OnMvpDead");
  160. setunitdata 'bg1,UMOB_AI,1;
  161. setunitdata 'bg1,UMOB_MASTERAID,getcharid(3);
  162. setarray 'mobid[1],1447,1446,1445,1444,1443,1442,1441,1440,1399,1398; // 魔物ID需以關數對稱
  163. mapannounce 'map$,"[規則說明]: 保護女神 至 第 "+getarraysize('mobid)+" 關 全部魔物殺死 ",15,"0x00FF99";
  164. hideonnpc instance_npcname(strnpcinfo(0));
  165. donpcevent instance_npcname("守護女神#副本")+"::OnMobLoop";
  166. end;
  167.  
  168.  
  169. OnMobLoop:
  170. if(!'mobid['my_level]){ set 'mobid['my_level],1002; debugmes "[守護女神]: 第 "+'my_level+" 關 怪物為0 預設1002"; }
  171. set .@answer$,strmobinfo (2,'mobid['my_level]);
  172. mapannounce 'map$,"[守護女神]: 第 "+'my_level+" 關 已放出 "+.@answer$+"",15,"0x77DDFF";
  173. set 'mpcs,'mpcs+(4*'sysfor);
  174. for(.@i=1; .@i<='sysfor; .@i++){
  175. set 'mob1,bg_monster (2,'map$,58,63,"--ja--",'mobid['my_level],instance_npcname(strnpcinfo(0))+"::OnMobDead");//左
  176. set 'mob2,bg_monster (2,'map$,93,64,"--ja--",'mobid['my_level],instance_npcname(strnpcinfo(0))+"::OnMobDead");//右
  177. set 'mob3,bg_monster (2,'map$,76,81,"--ja--",'mobid['my_level],instance_npcname(strnpcinfo(0))+"::OnMobDead");//上
  178. set 'mob4,bg_monster (2,'map$,76,47,"--ja--",'mobid['my_level],instance_npcname(strnpcinfo(0))+"::OnMobDead");//下
  179. if('mvpgg) end;
  180. set .@rand,rand(300,600);
  181. sleep .@rand;
  182. unitwalk 'mob1,68,63;//左ok
  183. unitwalk 'mob2,83,64;//右ok
  184. unitwalk 'mob3,76,71;//上ok
  185. unitwalk 'mob4,76,57;//下ok
  186. }//for 'mpcs
  187. end;
  188.  
  189. OnMvpDead:
  190. set 'mvpgg,1;
  191. mapannounce 'map$,"[守關女神]: 闖關失敗 3秒後 自動傳送回城",15,"0x00FF99";
  192. killmonster 'map$,instance_npcname(strnpcinfo(0))+"::OnMobDead";
  193. initnpctimer;
  194. end;
  195.  
  196. OnTimer3000:
  197. instance_warpall "prontera",156,77;
  198. end;
  199.  
  200. OnMobDead:
  201. set 'mpcs,'mpcs-1;
  202. if('mpcs) end;
  203. set 'my_level,'my_level+1;
  204. if( 'my_level < getarraysize('mobid) ){ donpcevent instance_npcname("守護女神#副本")+"::OnMobLoop"; end; }
  205. getmapxy(.@map$,'x,'y,0);
  206. donpcevent instance_npcname("守護女神#副本")+"::OnInstgp";
  207. end;
  208.  
  209.  
  210. Oninstgp:
  211. set 'gp_item,1;
  212. query_sql("SELECT time,team,pname From `instances_time` WHERE pid = "+'pid+"", .@time, .@team$ , .@pname$);
  213. set .@clearance,gettimetick(2)-.@time;
  214. announce "[守護女神] 由 ["+ .@team$ +"] 帶領的隊伍 ["+ .@pname$ +"]通過副本 花費時間: "+(.@clearance/3600/24)%24+" 小時 "+(.@clearance/60)%60+" 分鐘 "+(.@clearance)%60+" 秒",0;
  215. query_sql("Update `instances_time` SET `win` = '1' WHERE pid = "+'pid+"");
  216. donpcevent instance_npcname("副本寶箱#guar")+"::OnGpitem";
  217. end;
  218.  
  219.  
  220. }
  221.  
  222.  
  223.  
  224. 1@guar,0,0,0 script 副本寶箱#guar 10005,{
  225.  
  226. set .@item,601;
  227. set .@ipcs,1;
  228. if(!'gp_item) end;
  229. if(getd("'gp_inst"+getcharid(3))==1) goto okwarp;
  230. setd("'gp_inst"+getcharid(3)),1;
  231. getitem .@item,.@ipcs;
  232. dispbottom "[副本寶箱]: "+getitemname(.@item)+" x "+.@ipcs+"";
  233. goto okwarp;
  234.  
  235. okwarp:
  236. mes "^0000FF已經領取完成^000000";
  237. mes "^0000FF是否直接回城?^000000";
  238. if(select("傳送回城","結束服務")==2) close;
  239. //========================================
  240. set 'map$,instance_mapname("1@guar"); //此段為 地圖變數
  241. script4each "{ getitem 501,1; }",1,'map$;
  242. instance_warpall "prontera",156,177;
  243. end;
  244.  
  245. OnGpitem:
  246. enablenpc instance_npcname(strnpcinfo(0));
  247. movenpc instance_npcname("副本寶箱#guar"),'x,'y;
  248. end;
  249.  
  250.  
  251. OnInstanceInit:
  252. disablenpc instance_npcname(strnpcinfo(0));
  253. end;
  254.  
  255.  
  256. }
  257.  
  258.  
  259. 1@guar mapflag nowarp
  260. 1@guar mapflag nowarpto
  261. 1@guar mapflag noteleport
  262. 1@guar mapflag nosave SavePoint
  263. 1@guar mapflag nomemo
  264. 1@guar mapflag nobranch
  265. 1@guar mapflag monster_noteleport
  266. 1@guar mapflag nopenalty
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement