Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- prontera,155,161,5 script Poring Event 909,{
- function PunchScore;
- set .@gm_level,getgmlevel();
- if( .status == 2 && .@gm_level < .gm_level ){
- mes "Event ^0055FF"+.event_name$[.event_index]+"^000000 is running..";
- }else if( .status == 1 ){
- if( select( "Join ^0055FF"+.event_name$[.event_index]+"^000000 Event","Cancel" ) == 1 ){
- set @points,0;
- warp .event_map$[.event_index],.event_x[.event_index],.event_x[.event_index];
- }
- }else{
- mes "How can i help you ?";
- next;
- switch( select( "Event Schedule",
- ( .@gm_level < .gm_level || .status )?"":"[GM] Start Event",
- ( .@gm_level < .gm_level || .status != 2 )?"":"[GM] Stop ^0055FF"+.event_name$[.event_index]+"^000000 Event",
- ( .@gm_level < .gm_level || .status )?"":"[GM] Edit Prize",
- ( .@gm_level < .gm_level )?"":"[GM] Edit Schedule",
- ( .@gm_level < .gm_level || !getarraysize( $event_hour ) )?"":"[GM] Reload Schedule" )){
- Case 1:
- mes "This NPC consist of "+.event_size+" Events...";
- mes "Schedule : ";
- if( getarraysize( $event_hour ) ){
- for( set .@i,0; .@i < 24; set .@i,.@i + 1 )
- if( $event_hour[.@i] )
- 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";
- }else{
- mes "^777777No schedule has been set^000000";
- }
- next;
- set .@event_index,select( .event_menu$ ) - 1;
- set .@reward_count,getarraysize( getd( "$event_reward_"+.@event_index ) );
- mes "^0055FFReward List [ "+.event_name$[.@event_index]+" ]^000000";
- if( .@reward_count ){
- for( set .@i,0; .@i < .@reward_count; set .@i,.@i + 1 )
- mes "["+( .@i + 1 )+".] "+getd( "$event_reward_count_"+.@event_index+"["+.@i+"]" )+" x "+getitemname( getd( "$event_reward_"+.@event_index+"["+.@i+"]" ) );
- }else{
- mes "^777777No reward has been set for "+.event_name$[.@event_index]+" event^000000";
- }
- break;
- Case 2:
- mes "Select an Event to start ..";
- set .event_index,select( .event_menu$ ) - 1;
- close2;
- donpcevent .npc_name$+"::OnEventStart";
- end;
- Case 3:
- mes "Stop : "+.event_name$[ .event_index ]+" ??";
- if( select( "YES","NO" ) == 1 ){
- mes "Event will stop right away..";
- close2;
- donpcevent .npc_name$+"::OnEventEnd";
- end;
- }
- break;
- Case 4:
- mes "Select an Event Prize to edit ..";
- set .@event_index,select( .event_menu$ ) - 1;
- do{
- set .@reward_count,getarraysize( getd( "$event_reward_"+.@event_index ) );
- set .@event_reward_menu$,"";
- mes "^0055FFReward List [ "+.event_name$[.@event_index]+" ]^000000";
- if( .@reward_count ){
- for( set .@i,0; .@i < .@reward_count; set .@i,.@i + 1 ){
- set .@rewardid,getd( "$event_reward_"+.@event_index+"["+.@i+"]" );
- set .@rewardcount,getd( "$event_reward_count_"+.@event_index+"["+.@i+"]" );
- set .@event_reward_menu$,.@event_reward_menu$ + getitemname( .@rewardid ) +":";
- mes "["+( .@i + 1 )+".] "+.@rewardcount+" x "+getitemname( .@rewardid );
- }
- }else{
- mes "^777777No rewards has been set^000000";
- }
- switch( select( ( .@reward_count >= .max_reward_count )?"":"Add Reward",( !.@reward_count )?"":"Remove Reward" ) ){
- Case 1:
- mes "Input item ID";
- do{
- input .@itemid,0,30000;
- }while( getitemname( .@itemid ) == "null" && .@itemid );
- if( .@itemid ){
- mes "Amount : "+getitemname( .@itemid );
- input .@amount,0,.max_reward_amount;
- if( .@amount )
- if( select( "Add "+.@amount+" x "+getitemname( .@itemid )+" ?","Cancel" ) == 1 ){
- setd( "$event_reward_"+.@event_index+"["+.@reward_count+"]" ),.@itemid;
- setd( "$event_reward_count_"+.@event_index+"["+.@reward_count+"]" ),.@amount;
- mes "Done added";
- }
- }
- break;
- Case 2:
- mes "Select an item to remove.";
- set .@i,select( .@event_reward_menu$ ) - 1;
- set .@rewardid,getd( "$event_reward_"+.@event_index+"["+.@i+"]" );
- if( select( "Remove "+.@rewardid+" from reward ?","Cancel" ) == 1 ){
- mes "Done removed "+getitemname( .@rewardid );
- deletearray getd( "$event_reward_"+.@event_index+"["+.@i+"]" ),1;
- deletearray getd( "$event_reward_count_"+.@event_index+"["+.@i+"]" ),1;
- }
- default: break;
- }
- next;
- }while( select( "Continue","Close" ) == 1 );
- break;
- Case 5:
- mes "Select a time.";
- set .@menu$,"";
- for( set .@i,0; .@i < 24; set .@i,.@i + 1 ){
- set .@menu$,.@menu$ + "["+(( .@i < 10 )? "0":"" )+.@i+"."+(( $event_minute[.@i] < 10 )? "0":"" ) + $event_minute[.@i]+"] ";
- if( $event_hour[.@i] ){
- set .@menu$,.@menu$ + "^0055FF"+.event_name$[ ( $event_hour[.@i] - 1 ) ];
- }else{
- set .@menu$,.@menu$ + "^777777None";
- }
- set .@menu$,.@menu$ + "^000000" + ":";
- }
- set .@hour,select( .@menu$ ) - 1;
- if( !$event_hour[.@hour] ){
- mes "Select minute ..^7777770 ~ 59^000000";
- input .@minute,0,59;
- mes "Which event will start ?";
- mes "Time : ^777777["+(( .@hour < 10 )? "0":"" )+.@hour+"."+(( .@minute < 10 )? "0":"" ) + .@minute+"] ^000000";
- set .@event,select( .event_menu$ );
- set $event_hour[.@hour],.@event;
- set $event_minute[.@hour],.@minute;
- mes "Done added new "+.event_name$[.@event - 1]+" event on ^0055FF"+$event_hour[.@hour]+":"+$event_minute[.@hour]+"^000000.";
- }else{
- mes "Do you want to remove "+.event_name$[ $event_hour[.@hour]-1 ]+" Event from curren time ?";
- if( select( "YES","NO" ) == 1 ){
- set $event_hour[.@hour],0;
- set $event_minute[.@hour],0;
- mes "Done removed.";
- }
- }
- break;
- Case 6:
- mes "Event Schedules Reloaded.";
- donpcevent .npc_name$+"::OnMinute00";
- default: break;
- }
- }
- close;
- OnInit:
- set .gm_level,90;
- set .max_reward_count,3;
- set .max_reward_amount,30000;
- set .event_registration_minute,3;
- set .min_highscore,100;
- setarray .event_map$,"guild_vs5","guild_vs1";
- setarray .event_x,50,50,50;
- setarray .event_y,50,50,50;
- set .event_map_size,getarraysize( .event_map$ );
- setarray .event_name$,
- "Poring Catcher",
- "Poring Punch";
- set .event_size,getarraysize( .event_name$ );
- for( set .@i,0; .@i < .event_size; set .@i,.@i + 1 )
- set .event_menu$,.event_menu$ + .event_name$[.@i] +":";
- set .npc_name$,strnpcinfo(0);
- setarray .mf,
- mf_nomemo,
- mf_noteleport,
- mf_nosave,
- mf_nobranch,
- mf_nopenalty,
- mf_nozenypenalty,
- mf_notrade,
- mf_noskill,
- mf_nowarp,
- mf_noicewall,
- mf_nogo,
- mf_nobaseexp,
- mf_nojobexp,
- mf_nomobloot,
- mf_nomvploot,
- mf_noreturn,
- mf_nowarpto,
- mf_nodrop,
- mf_nochat,
- mf_monster_noteleport;
- set .mf_size,getarraysize( .mf );
- for( set .@map,0; .@map < .event_map_size; set .@map,.@map + 1 )
- for( set .@i,0; .@i < .mf_size; set .@i,.@i + 1 )
- setmapflag .event_map$[.@map],.mf[.@i];
- // end;
- OnMinute00:
- set .@hour,gettime( 3 );
- set .@minute,gettime( 2 );
- if( $event_hour[.@hour] && !.status && .@minute <= $event_minute[.@hour] ){
- if( $event_minute[.@hour] ){
- // 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]+"] ";
- sleep ( ( $event_minute[.@hour] - .@minute ) * 60000 );
- }
- set .event_index,( $event_hour[.@hour] - 1 );
- donpcevent .npc_name$+"::OnEventStart";
- }
- end;
- OnEventStart:
- set .status,1;
- for( set .@i,.event_registration_minute; .@i > 0; set .@i,.@i - 1 ){
- announce "Event : [ "+.event_name$[.event_index]+" ] registration opened for next "+.@i+" minutes.",0;
- sleep 60000;
- }
- set .status,2;
- announce "Event : [ "+.event_name$[.event_index]+" ] registration end, and event started ... ",0;
- sleep 3000;
- mapannounce .event_map$[.event_index],"Get ready ...event starting ....",0;
- sleep 5000;
- switch( .event_index ){
- Case 0: // Poring Catcher
- mapannounce .event_map$[.event_index],"Event started, kill the correct Poring to end the event...",0;
- monster .event_map$[.event_index],0,0,"--ja--",1002,100,.npc_name$+"::OnCatcherWrong";
- monster .event_map$[.event_index],0,0,"--ja--",1002,1,.npc_name$+"::OnCatcherEnd";
- end;
- Case 1: // Poring Punch
- mapannounce .event_map$[.event_index],"Event started, kill the Poring to get points....for next 15 minutes.",0;
- monster .event_map$[.event_index],0,0,"10 Points",1002,rand(30,50),.npc_name$+"::OnPunch1";
- monster .event_map$[.event_index],0,0,"50 Points",1002,rand(5,10),.npc_name$+"::OnPunch2";
- monster .event_map$[.event_index],0,0,"-30 Points",1002,rand(15,30),.npc_name$+"::OnPunch3";
- sleep ( 15 * 60000 );
- if( .status ){
- if( .winner_name$ == "" || .highscore < .min_highscore ){
- mapannounce .event_map$[.event_index],"Event doesnt have winner since nobody reach minimum score of "+.min_highscore+" points.",0;
- }else{
- mapannounce .event_map$[.event_index],"Even Winner : "+.winner_name$+" won with "+.highscore+" points ... ",0;
- }
- donpcevent .npc_name$+"::OnEventEnd";
- }
- default: break;
- }
- end;
- OnEventEnd:
- if( .winner_name$ != "" ){
- set .@aid,getcharid( 3,.winner_name$ );
- set .@reward_count,getarraysize( getd( "$event_reward_"+.event_index ) );
- if( .@reward_count )
- for( set .@i,0; .@i < .@reward_count; set .@i,.@i + 1 )
- getitem getd( "$event_reward_"+.event_index+"["+.@i+"]" ),getd( "$event_reward_count_"+.event_index+"["+.@i+"]" ),.@aid;
- }
- set .highscore,0;
- set .winner_name$,"";
- set .status,0;
- sleep 3000;
- announce "Event : [ "+.event_name$[.event_index]+" ] has ended",0;
- mapwarp .event_map$[.event_index],"prontera",155,181;
- killmonster .event_map$[.event_index],"All";
- end;
- OnCatcherWrong:
- monster .event_map$[.event_index],0,0,"--ja--",1002,1,.npc_name$+"::OnCatcherWrong";
- end;
- OnCatcherEnd:
- killmonster .event_map$[.event_index],"All";
- set .winner_name$,strcharinfo(0);
- mapannounce .event_map$[.event_index],.winner_name$+" found the correct poring...",0;
- donpcevent .npc_name$+"::OnEventEnd";
- end;
- OnPunch1:
- PunchScore( 10 );
- monster .event_map$[.event_index],0,0,"10 Points",1002,1,.npc_name$+"::OnPunch1";
- end;
- OnPunch2:
- PunchScore( -30 );
- monster .event_map$[.event_index],0,0,"-30 Points",1002,1,.npc_name$+"::OnPunch1";
- end;
- OnPunch3:
- PunchScore( 50 );
- monster .event_map$[.event_index],0,0,"50 Points",1002,1,.npc_name$+"::OnPunch1";
- end;
- function PunchScore {
- set .@score,getarg(0);
- set .@name$,strcharinfo(0);
- set @points,@points + .@score;
- dispbottom "Total Points : "+@points;
- if( @points > .highscore ){
- set .highscore,@points;
- if( .highscore_name$ != .@name$ ){
- message .highscore_name$,.@name$+" has beat your high score with "+.highscore+" points.";
- message .@name$,"You beaten "+.highscore_name$+"'s high score with "+.highscore+" points.";
- set .highscore_name$,.@name$;
- }
- }
- return;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment