yuhsing

Untitled

Oct 13th, 2013
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.57 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5.  
  6. prontera,155,161,5 script Date Dungeon 757,{
  7. set .@instance_id,instance_id(1);
  8. if( .@instance_id ) instance_destroy .@instance_id;
  9. if( select( "Participate Date Dungeon","View Records" ) == 2 ){
  10. switch( select( "[ Easy ]","[ Normal ]","[ Hard ]" ) ){
  11. default:
  12. Case 1:
  13. mes "^0055FF[ Easy Mode ]^000000";
  14. mes "Time : ^777777"+( $date_easy_record / 60 )+" min. "+( $date_easy_record % 60 )+" secs.^000000";
  15. mes "^0055FFPartner :^000000";
  16. mes " ~ ^777777"+$date_easy_1$+"^000000";
  17. mes " ~ ^777777"+$date_easy_2$+"^000000";
  18. break;
  19. Case 2:
  20. mes "^0055FF[ Normal Mode ]^000000";
  21. mes "Time : ^777777"+( $date_normal_record / 60 )+" min. "+( $date_normal_record % 60 )+" secs.^000000";
  22. mes "^0055FFPartner :^000000";
  23. mes " ~ ^777777"+$date_normal_1$+"^000000";
  24. mes " ~ ^777777"+$date_normal_2$+"^000000";
  25. break;
  26. Case 3:
  27. mes "^0055FF[ Hard Mode ]^000000";
  28. mes "Time : ^777777"+( $date_hard_record / 60 )+" min. "+( $date_hard_record % 60 )+" secs.^000000";
  29. mes "^0055FFPartner :^000000";
  30. mes " ~ ^777777"+$date_hard_1$+"^000000";
  31. mes " ~ ^777777"+$date_hard_2$+"^000000";
  32. break;
  33. }
  34. }else if( .npc_usage >= .max_npc_usage ){
  35. mes "Daily Limit ("+.max_npc_usage+" attempts) reached. You cant join anymore for today.";
  36. }else if( !ispartneron() ){
  37. mes "Your partner isnt online.";
  38. }else if( !.@instance_id ){
  39.  
  40. set .@party_id,getcharid(1);
  41. if( !.@party_id ){
  42. mes "You dont have a party.";
  43. close;
  44. }
  45. if( getpartyleader( .@party_id,2 ) != getcharid(0) ){
  46. mes "You are not party leader.";
  47. close;
  48. }
  49.  
  50. set .@date,atoi( gettimestr( "%Y%m%d",21 ) );
  51.  
  52. getpartymember .@party_id,1;
  53. getpartymember .@party_id,2;
  54. set .@original,getcharid(3);
  55.  
  56. for( set .@i,0; .@i < $@partymembercount; set .@i,.@i + 1 )
  57. if( isloggedin( $@partymemberaid[.@i],$@partymembercid[.@i] ) ){
  58. set .@count,.@count + 1;
  59. attachrid( $@partymemberaid[.@i] );
  60. if( .@date == #date_dungeon_date ){
  61. set .@name$,strcharinfo(0);
  62. set .@failed,1;
  63. break;
  64. }
  65. }
  66. attachrid( .@original );
  67. if( .@failed ){
  68. mes "[Date Dungeon] "+.@name$+" has reach the daily limit.";
  69. close;
  70. }
  71. if( $@partymembercount != 2 || .@count != 2 ){
  72. mes "Required only 2 members in one party where both members must online ";
  73. close;
  74. }
  75. set .@getpartnerid,getpartnerid();
  76. for( set .@i,0; .@i < $@partymembercount; set .@i,.@i + 1 )
  77. if( $@partymembercid[.@i] == .@getpartnerid ){
  78.  
  79. set @mode,select( "[ Easy ]","[ Normal ]","[ Hard ]" );
  80. set .@instance,instance_create( " Date Dungeon ",.@party_id );
  81.  
  82. if( .@instance < 0 ){
  83. switch( .@instance ){
  84. Case -2: mes "Invalid Party ID"; break;
  85. Case -3: mes "Max Instances Exceed."; break;
  86. Case -4:
  87. Case -1:
  88. default:
  89. mes "Failed to Create an Instances.";
  90. }
  91.  
  92. }else{
  93.  
  94. getpartymember .@party_id,1;
  95. getpartymember .@party_id,2;
  96. set .@original,getcharid(3);
  97. for( set .@i,0; .@i < $@partymembercount; set .@i,.@i + 1 )
  98. if( isloggedin( $@partymemberaid[.@i],$@partymembercid[.@i] ) ){
  99. attachrid( $@partymemberaid[.@i] );
  100. set #date_dungeon_count,#date_dungeon_count + 1;
  101. dispbottom "[ Date Dungeon Entrance Limit ] : "+#date_dungeon_count+" / "+.max_npc_usage;
  102. if( #date_dungeon_count >= .max_npc_usage ){
  103. set #date_dungeon_date,.@date;
  104. set #date_dungeon_count,0;
  105. }
  106. }
  107. attachrid( .@original );
  108.  
  109. instance_attachmap( .map$,.@instance );
  110. instance_set_timeout ( .dungeon_duration * 60 ),( .idle_duration * 60 ),.@instance;
  111. instance_init .@instance;
  112. instance_attach .@instance;
  113. set .npc_usage,.npc_usage + 1;
  114. warpparty has_instance( .npc_map$ ),.npc_x,.npc_y,.@party_id;
  115. donpcevent instance_npcname( "Date Dungeon#main",instance_id() )+"::OnInstanceInit";
  116. end;
  117. }
  118. close;
  119. }
  120. mes "Your spouse isnt in the party.";
  121.  
  122. }else{
  123. mes "You cant enter now.";
  124. }
  125. close;
  126.  
  127. OnInit:
  128. // dungeon map ( use instance mapname )
  129. set .map$,"5@tower";
  130. // max entry every day
  131. set .max_npc_usage,10;
  132. // dungeon duration
  133. set .dungeon_duration,60;
  134. // dungeon ( out of room kick )
  135. set .idle_duration,1;
  136.  
  137. setarray .mapflag,
  138. mf_nomemo,
  139. mf_noteleport,
  140. mf_nosave,
  141. mf_nobranch,
  142. mf_nowarp,
  143. mf_partylock,
  144. mf_nogo,
  145. mf_nomobloot,
  146. mf_nomvploot,
  147. mf_noreturn,
  148. mf_nowarpto,
  149. mf_monster_noteleport;
  150. set .mapflag_size,getarraysize( .mapflag );
  151. for( set .@i,0; .@i < .mapflag_size; set .@i,.@i + 1 )
  152. setmapflag .map$,.mapflag[.@i];
  153. getmapxy( .npc_map$,.npc_x,.npc_y,1,"Date Dungeon#main" );
  154. end;
  155. }
  156.  
  157. // mapname must match with above settings.
  158. // 1@room,30,28,4 script Date Dungeon#main 757,{
  159. 5@tower,78,88,4 script Date Dungeon#main 757,{
  160. function DateDungeonMob;
  161.  
  162. if( 'status > 1 ){
  163. npctalk "Kill all monster and survive.";
  164. }else if( getpartyleader( getcharid(1),2 ) != getcharid(0) ){
  165. npctalk "You are not party leader.";
  166. }else if( 'status ){
  167. set 'status,2;
  168. set 'party_id,getcharid(1);
  169. set 'instance_id,instance_id(1);
  170. set 'round,0;
  171. set 'mode,@mode;
  172. switch( 'mode ){
  173. default:
  174. Case 1: set 'modename$,"[ Easy ]"; break;
  175. Case 2: set 'modename$,"[ Normal ]"; break;
  176. Case 3: set 'modename$,"[ Hard ]"; break;
  177. }
  178. set 'party_id,getcharid(1);
  179. mes "Date Dungeon will be starting now..";
  180. close2;
  181. set 'time_used,gettimetick(2);
  182. instance_announce 0,"Welcome to Date Dungeon, and it's starting now...",0;
  183. donpcevent instance_npcname( "Date Dungeon#main",instance_id() )+"::OnInstanceStart";
  184. end;
  185. }else{
  186. npctalk "Please wait...";
  187. }
  188. end;
  189.  
  190. OnPCLogoutEvent:
  191. if( strcharinfo(3) == has_instance( getvariableofnpc( .map$,"Date Dungeon" ) ) ){
  192. instance_announce 0,"Party Member logoff....Dungeon Terminated.",0;
  193. instance_destroy instance_id(1);
  194. }
  195. end;
  196.  
  197. OnInstanceInit:
  198. sleep 2000;
  199. npctalk "Please get yourself ready...Kill all the monster and survive....Resurection Item disabled.";
  200. instance_announce 0,"Welcome to Date Dungeon",0;
  201. sleep 3000;
  202. npctalk "Dungeon will be terminate if party members logoff";
  203. sleep 3000;
  204. npctalk "Click me when you are ready.";
  205. set 'status,1;
  206. set 'mapname$,getvariableofnpc( .map$,"Date Dungeon" );
  207. end;
  208.  
  209. OnNormal:
  210. set 'mobcount,'mobcount - 1;
  211. if( 'mobcount ){
  212. instance_announce 0,"Monster Left : "+'mobcount,0;
  213. end;
  214. }
  215.  
  216. OnInstanceStart:
  217. set 'round,'round + 1;
  218. instance_announce 0,'modename$+" Round "+'round+" start in 5 seconds..",0;
  219. sleep 5000;
  220. switch( 'mode ){
  221. default:
  222. Case 1: // Easy Mode
  223. switch( 'round ){
  224. Case 1: DateDungeonMob( "OnNormal",1002,1,1002,1,1004,3 ); break;
  225. // Case 2: DateDungeonMob( "OnNormal",1002,1,1002,1,1004,3 ); break;
  226. // Case 3: DateDungeonMob( "OnNormal",1002,1,1002,2,1004,3 ); break;
  227. default: // Boss Stage
  228. DateDungeonMob( "OnBoss",1002,2 );
  229. }
  230. break;
  231. Case 2: // Normal Mode
  232. switch( 'round ){
  233. Case 1: DateDungeonMob( "OnNormal",1002,3,1002,5,1004,7 ); break;
  234. Case 2: DateDungeonMob( "OnNormal",1002,3,1002,5,1004,7 ); break;
  235. // Case 3: DateDungeonMob( "OnNormal",1002,3,1002,5,1004,7 ); break;
  236. default: // Boss Stage
  237. DateDungeonMob( "OnBoss",1002,6 );
  238. }
  239. break;
  240. Case 3: // Hard Mode
  241. switch( 'round ){
  242. Case 1: DateDungeonMob( "OnNormal",1002,7,1002,9,1004,12 ); break;
  243. Case 2: DateDungeonMob( "OnNormal",1002,7,1002,9,1004,12 ); break;
  244. Case 3: DateDungeonMob( "OnNormal",1002,7,1002,9,1004,12 ); break;
  245. default: // Boss Stage
  246. DateDungeonMob( "OnBoss",1002,12 );
  247. }
  248. break;
  249. }
  250. end;
  251.  
  252. OnBoss:
  253. set 'mobcount,'mobcount - 1;
  254. if( 'mobcount ){
  255. instance_announce 0,'modename$+" Boss Monster Left : "+'mobcount,0;
  256. }else{
  257.  
  258. set .@timer,( gettimetick(2) - 'time_used );
  259. instance_announce 0,'modename$+" Congratz ."+getnpctimer(0)+".. Total Time Spent : "+( .@timer / 60 )+" min. "+( .@timer % 60 )+" secs.",0;
  260.  
  261. stopnpctimer;
  262. getpartymember 'party_id;
  263. switch( 'mode ){
  264. default:
  265. Case 1:
  266. if( $date_easy_record > .@timer || !$date_easy_record ){
  267. set $date_easy_record,.@timer;
  268. set $date_easy_1$,$@partymembername$[0];
  269. set $date_easy_2$,$@partymembername$[1];
  270. }
  271. break;
  272. Case 2:
  273. if( $date_normal_record > .@timer || !$date_normal_record ){
  274. set $date_normal_record,.@timer;
  275. set $date_normal_1$,$@partymembername$[0];
  276. set $date_normal_2$,$@partymembername$[1];
  277. }
  278. break;
  279. Case 3:
  280. if( $date_easy_record > .@timer || !$date_easy_record ){
  281. set $date_hard_record,.@timer;
  282. set $date_hard_1$,$@partymembername$[0];
  283. set $date_hard_2$,$@partymembername$[1];
  284. }
  285. break;
  286. }
  287. sleep 3000;
  288. instance_announce 0,'modename$+" Instance destroy within 10 seconds..",0;
  289. sleep 10000;
  290. instance_destroy 'instance_id;
  291. }
  292. end;
  293.  
  294. function DateDungeonMob {
  295. set .@event$,getarg(0);
  296. set .@i,1;
  297. while( getarg( .@i,0 ) ){
  298. monster 'mapname$,0,0,"--ja--",getarg( .@i ),getarg( .@i+1 ),instance_npcname( "Date Dungeon#main", 'instance_id )+"::"+.@event$;
  299. set .@i,.@i + 2;
  300. }
  301. set 'mobcount,mobcount( 'mapname$,instance_npcname( "Date Dungeon#main",'instance_id )+"::"+.@event$ );
  302. instance_announce 0,'modename$+" Monster Left : "+'mobcount,0;
  303. return;
  304. }
  305.  
  306. }
Advertisement
Add Comment
Please, Sign In to add comment