yuhsing

Untitled

Jul 14th, 2013
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.82 KB | None | 0 0
  1.  
  2.  
  3.  
  4. prontera,155,161,5 script Poring Event 909,{
  5. function PunchScore;
  6.  
  7. set .@gm_level,getgmlevel();
  8.  
  9. if( .status == 2 && .@gm_level < .gm_level ){
  10. mes "Event ^0055FF"+.event_name$[.event_index]+"^000000 is running..";
  11. }else if( .status == 1 ){
  12. if( select( "Join ^0055FF"+.event_name$[.event_index]+"^000000 Event","Cancel" ) == 1 ){
  13. set @points,0;
  14. warp .event_map$[.event_index],.event_x[.event_index],.event_x[.event_index];
  15. }
  16. }else{
  17. mes "How can i help you ?";
  18. next;
  19. switch( select( "Event Schedule",
  20. ( .@gm_level < .gm_level || .status )?"":"[GM] Start Event",
  21. ( .@gm_level < .gm_level || .status != 2 )?"":"[GM] Stop ^0055FF"+.event_name$[.event_index]+"^000000 Event",
  22. ( .@gm_level < .gm_level || .status )?"":"[GM] Edit Prize",
  23. ( .@gm_level < .gm_level )?"":"[GM] Edit Schedule",
  24. ( .@gm_level < .gm_level || !getarraysize( $event_hour ) )?"":"[GM] Reload Schedule" )){
  25. Case 1:
  26. mes "This NPC consist of "+.event_size+" Events...";
  27. mes "Schedule : ";
  28. if( getarraysize( $event_hour ) ){
  29. for( set .@i,0; .@i < 24; set .@i,.@i + 1 )
  30. if( $event_hour[.@i] )
  31. mes "^777777["+(( .@i < 10 )?"0"+.@i:.@i )+":"+(( $event_minute[.@i] < 10 )?"0"+$event_minute[.@i]:$event_minute[.@i] )+"]^0055FF "+.event_name$[ $event_hour[.@i]-1 ]+"^000000";
  32. }else{
  33. mes "^777777No schedule has been set^000000";
  34. }
  35. next;
  36. set .@event_index,select( .event_menu$ ) - 1;
  37. set .@reward_count,getarraysize( getd( "$event_reward_"+.@event_index ) );
  38. mes "^0055FFReward List [ "+.event_name$[.@event_index]+" ]^000000";
  39. if( .@reward_count ){
  40. for( set .@i,0; .@i < .@reward_count; set .@i,.@i + 1 )
  41. mes "["+( .@i + 1 )+".] "+getd( "$event_reward_count_"+.@event_index+"["+.@i+"]" )+" x "+getitemname( getd( "$event_reward_"+.@event_index+"["+.@i+"]" ) );
  42. }else{
  43. mes "^777777No reward has been set for "+.event_name$[.@event_index]+" event^000000";
  44. }
  45. break;
  46. Case 2:
  47. mes "Select an Event to start ..";
  48. set .event_index,select( .event_menu$ ) - 1;
  49. close2;
  50. donpcevent .npc_name$+"::OnEventStart";
  51. end;
  52. Case 3:
  53. mes "Stop : "+.event_name$[ .event_index ]+" ??";
  54. if( select( "YES","NO" ) == 1 ){
  55. mes "Event will stop right away..";
  56. close2;
  57. donpcevent .npc_name$+"::OnEventEnd";
  58. end;
  59. }
  60. break;
  61. Case 4:
  62. mes "Select an Event Prize to edit ..";
  63. set .@event_index,select( .event_menu$ ) - 1;
  64. do{
  65. set .@reward_count,getarraysize( getd( "$event_reward_"+.@event_index ) );
  66. set .@event_reward_menu$,"";
  67. mes "^0055FFReward List [ "+.event_name$[.@event_index]+" ]^000000";
  68. if( .@reward_count ){
  69. for( set .@i,0; .@i < .@reward_count; set .@i,.@i + 1 ){
  70. set .@rewardid,getd( "$event_reward_"+.@event_index+"["+.@i+"]" );
  71. set .@rewardcount,getd( "$event_reward_count_"+.@event_index+"["+.@i+"]" );
  72. set .@event_reward_menu$,.@event_reward_menu$ + getitemname( .@rewardid ) +":";
  73. mes "["+( .@i + 1 )+".] "+.@rewardcount+" x "+getitemname( .@rewardid );
  74. }
  75. }else{
  76. mes "^777777No rewards has been set^000000";
  77. }
  78. switch( select( ( .@reward_count >= .max_reward_count )?"":"Add Reward",( !.@reward_count )?"":"Remove Reward" ) ){
  79. Case 1:
  80. mes "Input item ID";
  81. do{
  82. input .@itemid,0,30000;
  83. }while( getitemname( .@itemid ) == "null" && .@itemid );
  84. if( .@itemid ){
  85. mes "Amount : "+getitemname( .@itemid );
  86. input .@amount,0,.max_reward_amount;
  87. if( .@amount )
  88. if( select( "Add "+.@amount+" x "+getitemname( .@itemid )+" ?","Cancel" ) == 1 ){
  89. setd( "$event_reward_"+.@event_index+"["+.@reward_count+"]" ),.@itemid;
  90. setd( "$event_reward_count_"+.@event_index+"["+.@reward_count+"]" ),.@amount;
  91. mes "Done added";
  92. }
  93. }
  94. break;
  95. Case 2:
  96. mes "Select an item to remove.";
  97. set .@i,select( .@event_reward_menu$ ) - 1;
  98. set .@rewardid,getd( "$event_reward_"+.@event_index+"["+.@i+"]" );
  99. if( select( "Remove "+.@rewardid+" from reward ?","Cancel" ) == 1 ){
  100. mes "Done removed "+getitemname( .@rewardid );
  101. deletearray getd( "$event_reward_"+.@event_index+"["+.@i+"]" ),1;
  102. deletearray getd( "$event_reward_count_"+.@event_index+"["+.@i+"]" ),1;
  103. }
  104. default: break;
  105. }
  106. next;
  107. }while( select( "Continue","Close" ) == 1 );
  108. break;
  109. Case 5:
  110. mes "Select a time.";
  111. set .@menu$,"";
  112. for( set .@i,0; .@i < 24; set .@i,.@i + 1 ){
  113. set .@menu$,.@menu$ + "["+(( .@i < 10 )? "0":"" )+.@i+"."+(( $event_minute[.@i] < 10 )? "0":"" ) + $event_minute[.@i]+"] ";
  114. if( $event_hour[.@i] ){
  115. set .@menu$,.@menu$ + "^0055FF"+.event_name$[ ( $event_hour[.@i] - 1 ) ];
  116. }else{
  117. set .@menu$,.@menu$ + "^777777None";
  118. }
  119. set .@menu$,.@menu$ + "^000000" + ":";
  120. }
  121. set .@hour,select( .@menu$ ) - 1;
  122. if( !$event_hour[.@hour] ){
  123. mes "Select minute ..^7777770 ~ 59^000000";
  124. input .@minute,0,59;
  125. mes "Which event will start ?";
  126. mes "Time : ^777777["+(( .@hour < 10 )? "0":"" )+.@hour+"."+(( .@minute < 10 )? "0":"" ) + .@minute+"] ^000000";
  127. set .@event,select( .event_menu$ );
  128. set $event_hour[.@hour],.@event;
  129. set $event_minute[.@hour],.@minute;
  130. mes "Done added new "+.event_name$[.@event - 1]+" event on ^0055FF"+$event_hour[.@hour]+":"+$event_minute[.@hour]+"^000000.";
  131. }else{
  132. mes "Do you want to remove "+.event_name$[ $event_hour[.@hour]-1 ]+" Event from curren time ?";
  133. if( select( "YES","NO" ) == 1 ){
  134. set $event_hour[.@hour],0;
  135. set $event_minute[.@hour],0;
  136. mes "Done removed.";
  137. }
  138. }
  139. break;
  140. Case 6:
  141. mes "Event Schedules Reloaded.";
  142. donpcevent .npc_name$+"::OnMinute00";
  143. default: break;
  144. }
  145. }
  146. close;
  147.  
  148. OnInit:
  149. set .gm_level,90;
  150. set .max_reward_count,3;
  151. set .max_reward_amount,30000;
  152. set .event_registration_minute,3;
  153. set .min_highscore,100;
  154.  
  155. setarray .event_map$,"guild_vs5","guild_vs1";
  156. setarray .event_x,50,50,50;
  157. setarray .event_y,50,50,50;
  158. set .event_map_size,getarraysize( .event_map$ );
  159. setarray .event_name$,
  160. "Poring Catcher",
  161. "Poring Punch";
  162.  
  163. set .event_size,getarraysize( .event_name$ );
  164. for( set .@i,0; .@i < .event_size; set .@i,.@i + 1 )
  165. set .event_menu$,.event_menu$ + .event_name$[.@i] +":";
  166. set .npc_name$,strnpcinfo(0);
  167. setarray .mf,
  168. mf_nomemo,
  169. mf_noteleport,
  170. mf_nosave,
  171. mf_nobranch,
  172. mf_nopenalty,
  173. mf_nozenypenalty,
  174. mf_notrade,
  175. mf_noskill,
  176. mf_nowarp,
  177. mf_noicewall,
  178. mf_nogo,
  179. mf_nobaseexp,
  180. mf_nojobexp,
  181. mf_nomobloot,
  182. mf_nomvploot,
  183. mf_noreturn,
  184. mf_nowarpto,
  185. mf_nodrop,
  186. mf_nochat,
  187. mf_monster_noteleport;
  188. set .mf_size,getarraysize( .mf );
  189. for( set .@map,0; .@map < .event_map_size; set .@map,.@map + 1 )
  190. for( set .@i,0; .@i < .mf_size; set .@i,.@i + 1 )
  191. setmapflag .event_map$[.@map],.mf[.@i];
  192. // end;
  193.  
  194. OnMinute00:
  195. set .@hour,gettime( 3 );
  196. set .@minute,gettime( 2 );
  197. if( $event_hour[.@hour] && !.status && .@minute <= $event_minute[.@hour] ){
  198. if( $event_minute[.@hour] ){
  199. // npctalk "Next Event : "+.event_name$[$event_hour[.@hour] - 1]+" within "+( $event_minute[.@hour] - .@minute )+" minute .. ["+(( .@hour < 10 )? "0":"" )+.@hour+"."+(( $event_minute[.@hour] < 10 )? "0":"" ) + $event_minute[.@hour]+"] ";
  200. sleep ( ( $event_minute[.@hour] - .@minute ) * 60000 );
  201. }
  202. set .event_index,( $event_hour[.@hour] - 1 );
  203. donpcevent .npc_name$+"::OnEventStart";
  204. }
  205. end;
  206.  
  207.  
  208. OnEventStart:
  209. set .status,1;
  210. for( set .@i,.event_registration_minute; .@i > 0; set .@i,.@i - 1 ){
  211. announce "Event : [ "+.event_name$[.event_index]+" ] registration opened for next "+.@i+" minutes.",0;
  212. sleep 60000;
  213. }
  214. set .status,2;
  215. announce "Event : [ "+.event_name$[.event_index]+" ] registration end, and event started ... ",0;
  216. sleep 3000;
  217. mapannounce .event_map$[.event_index],"Get ready ...event starting ....",0;
  218. sleep 5000;
  219. switch( .event_index ){
  220. Case 0: // Poring Catcher
  221. mapannounce .event_map$[.event_index],"Event started, kill the correct Poring to end the event...",0;
  222. monster .event_map$[.event_index],0,0,"--ja--",1002,100,.npc_name$+"::OnCatcherWrong";
  223. monster .event_map$[.event_index],0,0,"--ja--",1002,1,.npc_name$+"::OnCatcherEnd";
  224. end;
  225. Case 1: // Poring Punch
  226. mapannounce .event_map$[.event_index],"Event started, kill the Poring to get points....for next 15 minutes.",0;
  227. monster .event_map$[.event_index],0,0,"10 Points",1002,rand(30,50),.npc_name$+"::OnPunch1";
  228. monster .event_map$[.event_index],0,0,"50 Points",1002,rand(5,10),.npc_name$+"::OnPunch2";
  229. monster .event_map$[.event_index],0,0,"-30 Points",1002,rand(15,30),.npc_name$+"::OnPunch3";
  230. sleep ( 15 * 60000 );
  231. if( .status ){
  232. if( .winner_name$ == "" || .highscore < .min_highscore ){
  233. mapannounce .event_map$[.event_index],"Event doesnt have winner since nobody reach minimum score of "+.min_highscore+" points.",0;
  234. }else{
  235. mapannounce .event_map$[.event_index],"Even Winner : "+.winner_name$+" won with "+.highscore+" points ... ",0;
  236. }
  237. donpcevent .npc_name$+"::OnEventEnd";
  238. }
  239. default: break;
  240. }
  241. end;
  242.  
  243. OnEventEnd:
  244. if( .winner_name$ != "" ){
  245. set .@aid,getcharid( 3,.winner_name$ );
  246. set .@reward_count,getarraysize( getd( "$event_reward_"+.event_index ) );
  247. if( .@reward_count )
  248. for( set .@i,0; .@i < .@reward_count; set .@i,.@i + 1 )
  249. getitem getd( "$event_reward_"+.event_index+"["+.@i+"]" ),getd( "$event_reward_count_"+.event_index+"["+.@i+"]" ),.@aid;
  250. }
  251. set .highscore,0;
  252. set .winner_name$,"";
  253. set .status,0;
  254. sleep 3000;
  255. announce "Event : [ "+.event_name$[.event_index]+" ] has ended",0;
  256. mapwarp .event_map$[.event_index],"prontera",155,181;
  257. killmonster .event_map$[.event_index],"All";
  258. end;
  259.  
  260. OnCatcherWrong:
  261. monster .event_map$[.event_index],0,0,"--ja--",1002,1,.npc_name$+"::OnCatcherWrong";
  262. end;
  263.  
  264. OnCatcherEnd:
  265. killmonster .event_map$[.event_index],"All";
  266. set .winner_name$,strcharinfo(0);
  267. mapannounce .event_map$[.event_index],.winner_name$+" found the correct poring...",0;
  268. donpcevent .npc_name$+"::OnEventEnd";
  269. end;
  270.  
  271. OnPunch1:
  272. PunchScore( 10 );
  273. monster .event_map$[.event_index],0,0,"10 Points",1002,1,.npc_name$+"::OnPunch1";
  274. end;
  275. OnPunch2:
  276. PunchScore( -30 );
  277. monster .event_map$[.event_index],0,0,"-30 Points",1002,1,.npc_name$+"::OnPunch1";
  278. end;
  279. OnPunch3:
  280. PunchScore( 50 );
  281. monster .event_map$[.event_index],0,0,"50 Points",1002,1,.npc_name$+"::OnPunch1";
  282. end;
  283.  
  284. function PunchScore {
  285. set .@score,getarg(0);
  286. set .@name$,strcharinfo(0);
  287.  
  288. set @points,@points + .@score;
  289. dispbottom "Total Points : "+@points;
  290. if( @points > .highscore ){
  291. set .highscore,@points;
  292. if( .highscore_name$ != .@name$ ){
  293. message .highscore_name$,.@name$+" has beat your high score with "+.highscore+" points.";
  294. message .@name$,"You beaten "+.highscore_name$+"'s high score with "+.highscore+" points.";
  295. set .highscore_name$,.@name$;
  296. }
  297. }
  298. return;
  299. }
  300.  
  301. }
Advertisement
Add Comment
Please, Sign In to add comment