Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*=======================================================================================================================
- - 腳本名稱:新守護女神
- - 腳本作者:極限RO工作組
- - 測試環境:Rathena
- - 腳本說明:
- - 守護女神死亡後 三秒後傳送出場
- - 打完設定的怪物ID後 為通關 然後會出現寶箱
- - 注意事項: 腳本僅供,程式語言研究,學術研究用途
- =========================================================================================================================*/
- prontera,145,112,4 script 守護女神 403,{
- .@qlv=130; //要求等級
- .@pcs=1; //要求人數
- .@time=1; //冷卻時間
- .@quid=70005; //任務 ID
- .@map$="1@guar"; //副本地圖
- .@idb$="守護女神"; //副本名稱
- .@pid=getcharid(1); //隊伍的ID
- .@team$=getpartyleader(getcharid(1)); //隊長名稱
- mes "選擇副本: ^0000ff"+.@idb$+"^000000";
- mes "要求等級: ^0000ff"+.@qlv+"^000000";
- mes "至少人數: ^0000ff"+.@pcs+"^000000";
- .@play=checkquest(.@quid);
- //斜線 case 0 or case 1 = 不檢查 是否冷卻中
- switch(.@play){
- //case 0: goto notime;
- //case 1: goto notime;
- case 2: erasequest .@quid; break;
- }
- set .@kwin,query_sql ("Select win From instances_time Where pid = "+getcharid(1)+"",.@swin);
- do {
- if(getcharid(0) == getpartyleader(.@pid,2)) set .@select,select("申請副本:進入副本:銷毀副本:結束對話");
- else set .@select,select(":進入副本::結束對話");
- switch(.@select){
- case 1:
- if (instance_create(.@idb$) < 0) {
- mes "^7100DC一個隊伍 最多只能 申請一個副本^000000";
- break;
- }
- query_sql "DELETE FROM `instances_time` WHERE pid = "+getcharid(1)+"";
- query_sql "INSERT INTO `instances_time` ( pid,pname,team,win,time ) VALUES ( "+getcharid(1)+", '"+strcharinfo(1)+"', '"+strcharinfo(0)+"', '0', "+gettimetick(2)+")";
- mes "^f74300副本申請成功^000000";
- set .@kwin,query_sql ("Select win From instances_time Where pid = "+getcharid(1)+"",.@swin);
- break;
- case 2:
- if(.@kwin) if(.@swin){ mes "^FF0000副本已通關 無法進入^000000"; close; }
- switch(instance_enter(.@idb$)) {
- case 0:
- getmapxy(.@map$,.@x,.@y,0);
- mapannounce instance_mapname(""+.@map$+""),"隊伍: "+getpartyname(.@pid)+" 的 成員: "+strcharinfo(0)+" 開始挑戰 "+.@idb$+" 副本",bc_map,"0x00ff99";
- if (checkquest(.@quid) == -1) setquest .@quid;
- break;
- case 1:
- mes "沒有找到隊伍";
- mes "請重新組隊 再過來申請 此副本";
- break;
- case 2:
- mes "^FF0000尚未申請 無法進入^000000";
- break;
- case 3:
- mes "無效副本名 副本和組隊 不匹配";
- mes "請重新組隊 再過來申請 此副本";
- break;
- }//case 2 switch end;
- close;
- case 3:
- mes "^7100DC試圖銷毀副本^000000";
- instance_destroy;
- break;
- case 4: break;
- }// switch(.@select) switch end;
- } while(.@select==1);
- close;
- notime:
- mes "^7100DC副本冷卻中^000000";
- set .@qaz,query_sql("SELECT `time` From `quest` WHERE `char_id` = "+getcharid(0)+" AND `quest_id` = "+getcharid(0)+"", .@sqltime);
- set .@time,.@sqltime - gettimetick(2);
- mes "冷卻時間:";
- mes "^FF0000"+.@time/86400+"^000000 日 ^FF0000"+(.@time/3600)%24+"^000000 時 ^FF0000"+(.@time/60)%60+"^000000 分 ^FF0000"+.@time%60+"^000000 秒";
- close;
- nolv:
- mes "^FF0000等級不足^000000";
- mes "您目前的 基本等級 ^0000FF"+BaseLevel+" 級^000000";
- mes "基本等級 至少達到 ^FF0000"+.@qlv+" 級^000000";
- close;
- noweight:
- mes "目前狀態: ^FF0000負重量 大於 80%^000000";
- mes "身上背著太多的重量";
- mes "減輕了負重量後回來";
- close;
- nopeople:
- mes "^FF0000當前隊伍人數不足^000000";
- mes "要求隊伍人數: ^FF0000"+.@pcs+"^000000 以上";
- close;
- nopid:
- mes "^FF0000沒有隊伍 無法進行副本^000000";
- mes "要求隊伍人數: ^FF0000"+.@pcs+"^000000 以上";
- close;
- nozeny:
- mes "^FF0000金錢不足^000000";
- mes "身上金錢: ^0000FF"+Zeny+"^000000";
- mes "所需費用: ^0000FF"+(.@zeny/10000)+"萬^000000";
- close;
- OnInit:
- waitingroom " "+strnpcinfo(0)+"",0;
- end;
- }
- 1@guar,76,63,4 script 守護女神#副本 403,{
- if(getpartyleader(getcharid(1),2) != getcharid(0)) end;
- mes "[規則說明]";
- mes "^0000FF一直保護女神到最大關卡^000000";
- mes "^0000FF消滅每關所有出現的怪物^000000";
- mes " ";
- mes "^FF0000女神死亡的話將挑戰失敗^000000";
- if(select("開始挑戰","在等一下")==2) close;
- close2;
- set 'pid,getcharid(1);
- set 'mpcs,0;
- set 'mvpgg,0;
- set 'sysfor,5;
- set 'gp_item,0;
- set 'my_level,1;
- set 'map$,instance_mapname("1@guar");
- set 'bg1,bg_monster(1,'map$,76,63,"--ja--",3991,instance_npcname(strnpcinfo(0))+"::OnMvpDead");
- setunitdata 'bg1,UMOB_AI,1;
- setunitdata 'bg1,UMOB_MASTERAID,getcharid(3);
- setarray 'mobid[1],1447,1446,1445,1444,1443,1442,1441,1440,1399,1398; // 魔物ID需以關數對稱
- mapannounce 'map$,"[規則說明]: 保護女神 至 第 "+getarraysize('mobid)+" 關 全部魔物殺死 ",15,"0x00FF99";
- hideonnpc instance_npcname(strnpcinfo(0));
- donpcevent instance_npcname("守護女神#副本")+"::OnMobLoop";
- end;
- OnMobLoop:
- if(!'mobid['my_level]){ set 'mobid['my_level],1002; debugmes "[守護女神]: 第 "+'my_level+" 關 怪物為0 預設1002"; }
- set .@answer$,strmobinfo (2,'mobid['my_level]);
- mapannounce 'map$,"[守護女神]: 第 "+'my_level+" 關 已放出 "+.@answer$+"",15,"0x77DDFF";
- set 'mpcs,'mpcs+(4*'sysfor);
- for(.@i=1; .@i<='sysfor; .@i++){
- set 'mob1,bg_monster (2,'map$,58,63,"--ja--",'mobid['my_level],instance_npcname(strnpcinfo(0))+"::OnMobDead");//左
- set 'mob2,bg_monster (2,'map$,93,64,"--ja--",'mobid['my_level],instance_npcname(strnpcinfo(0))+"::OnMobDead");//右
- set 'mob3,bg_monster (2,'map$,76,81,"--ja--",'mobid['my_level],instance_npcname(strnpcinfo(0))+"::OnMobDead");//上
- set 'mob4,bg_monster (2,'map$,76,47,"--ja--",'mobid['my_level],instance_npcname(strnpcinfo(0))+"::OnMobDead");//下
- if('mvpgg) end;
- set .@rand,rand(300,600);
- sleep .@rand;
- unitwalk 'mob1,68,63;//左ok
- unitwalk 'mob2,83,64;//右ok
- unitwalk 'mob3,76,71;//上ok
- unitwalk 'mob4,76,57;//下ok
- }//for 'mpcs
- end;
- OnMvpDead:
- set 'mvpgg,1;
- mapannounce 'map$,"[守關女神]: 闖關失敗 3秒後 自動傳送回城",15,"0x00FF99";
- killmonster 'map$,instance_npcname(strnpcinfo(0))+"::OnMobDead";
- initnpctimer;
- end;
- OnTimer3000:
- instance_warpall "prontera",156,77;
- end;
- OnMobDead:
- set 'mpcs,'mpcs-1;
- if('mpcs) end;
- set 'my_level,'my_level+1;
- if( 'my_level < getarraysize('mobid) ){ donpcevent instance_npcname("守護女神#副本")+"::OnMobLoop"; end; }
- getmapxy(.@map$,'x,'y,0);
- donpcevent instance_npcname("守護女神#副本")+"::OnInstgp";
- end;
- Oninstgp:
- set 'gp_item,1;
- query_sql("SELECT time,team,pname From `instances_time` WHERE pid = "+'pid+"", .@time, .@team$ , .@pname$);
- set .@clearance,gettimetick(2)-.@time;
- announce "[守護女神] 由 ["+ .@team$ +"] 帶領的隊伍 ["+ .@pname$ +"]通過副本 花費時間: "+(.@clearance/3600/24)%24+" 小時 "+(.@clearance/60)%60+" 分鐘 "+(.@clearance)%60+" 秒",0;
- query_sql("Update `instances_time` SET `win` = '1' WHERE pid = "+'pid+"");
- donpcevent instance_npcname("副本寶箱#guar")+"::OnGpitem";
- end;
- }
- 1@guar,0,0,0 script 副本寶箱#guar 10005,{
- set .@item,601;
- set .@ipcs,1;
- if(!'gp_item) end;
- if(getd("'gp_inst"+getcharid(3))==1) goto okwarp;
- setd("'gp_inst"+getcharid(3)),1;
- getitem .@item,.@ipcs;
- dispbottom "[副本寶箱]: "+getitemname(.@item)+" x "+.@ipcs+"";
- goto okwarp;
- okwarp:
- mes "^0000FF已經領取完成^000000";
- mes "^0000FF是否直接回城?^000000";
- if(select("傳送回城","結束服務")==2) close;
- //========================================
- set 'map$,instance_mapname("1@guar"); //此段為 地圖變數
- script4each "{ getitem 501,1; }",1,'map$;
- instance_warpall "prontera",156,177;
- end;
- OnGpitem:
- enablenpc instance_npcname(strnpcinfo(0));
- movenpc instance_npcname("副本寶箱#guar"),'x,'y;
- end;
- OnInstanceInit:
- disablenpc instance_npcname(strnpcinfo(0));
- end;
- }
- 1@guar mapflag nowarp
- 1@guar mapflag nowarpto
- 1@guar mapflag noteleport
- 1@guar mapflag nosave SavePoint
- 1@guar mapflag nomemo
- 1@guar mapflag nobranch
- 1@guar mapflag monster_noteleport
- 1@guar mapflag nopenalty
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement