yuhsing

Untitled

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