Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class 1 npc_dm : teleporter
- {
- parameter:
- string fnHi = "npc_dm_manager_start.htm";
- string fnLowLevel = "npc_dm_manager_no_level.htm";
- string fnGoMatch = "npc_dm_manager_go_match.htm";
- string fnNoMatch = "npc_dm_manager_no_match.htm";
- string fnKarma = "npc_dm_manager_karma.htm";
- string fnRegNo = "npc_dm_reg_no.htm";
- string DoorName1 = "aden_colosseum_001_002";
- string DoorName2 = "aden_colosseum_002_001";
- int TelPosX1 = 151484;
- int TelPosY1 = 46731;
- int TelPosZ1 = -3400;
- int TelPosX2 = 147567;
- int TelPosY2 = 46711;
- int TelPosZ2 = -3400;
- int TownPosX = 83443;
- int TownPosY = 148643;
- int TownPosZ = -3400;
- int SpawnPosX1 = 82653; //Initial position
- int SpawnPosY1 = 149717;
- int SpawnPosZ1 = -3464;
- int SpawnPosX2 = 149494; //He can't be attacked from here
- int SpawnPosY2 = 48358;
- int SpawnPosZ2 = -3152;
- int SpawnPosX3 = 149462; //He can be attacked from here
- int SpawnPosY3 = 46743;
- int SpawnPosZ3 = -3408;
- string event_started = "MassPvP: Registration has started!";
- string register_instructions = "MassPvP: To participate , go to Giran and talk to me";
- string start_time_message = "MassPvP: will begin in 20 minutes!";
- string event_finish_time_message = "MassPvP: event will finish in 10 minutes !";
- string event_finish_time_message_skill = "MassPvP: event will finish in 20 minutes, or when someone uses skill'MassPvP' on me!" ;
- int Priz1 = 6673;
- int Col1 = 5;
- int Priz2 = 1540;
- int Col2 = 10;
- int Priz3 = 0;
- int Col3 = 0;
- int minimum_level = 40;
- int ignore_time = 1 ;
- int time_before_start = 5; //default 160
- int use_skill_to_win = 0;
- int skill_to_win_id = 1537025;
- int event_time_no_skill = 10;
- int event_time_skill = 20;
- int minimum_participants = 2;
- handler:
- EventHandler TALKED( talker )
- {
- if( myself.i_ai0 == 0 )
- {
- if( talker.karma > 0 )
- {
- myself::ShowPage( talker, fnKarma );
- }
- else if( myself::GetCookie( talker, "md" ) != 1 &&
- myself::GetCookie( talker, "md" ) != 2 )
- {
- myself::ShowPage( talker, fnHi );
- }
- else
- {
- myself::ShowPage( talker, fnNoMatch );
- }
- }
- else
- {
- myself::ShowPage( talker, fnRegNo );
- }
- }
- EventHandler CREATED()
- {
- myself::InstantTeleport( myself.sm, SpawnPosX1, SpawnPosY1, SpawnPosZ1 );
- myself.i_ai0 = 0;
- myself.i_ai1 = 0;
- myself::AddTimerEx( 100, 1000 * 60 );
- }
- EventHandler MENU_SELECTED( talker, ask, reply, i1 )
- {
- if( ask == 1 && reply == 1 )
- {
- if( talker.level >= minimum_level )
- {
- myself.i_ai1 = myself.i_ai1 + 1;
- for( i1 = 20; i1 < 100; i1 = i1 + 1 )
- {
- if( myself::GetGlobalMap( i1 ) == -1 )
- {
- myself::RegisterGlobalMap( i1, myself::GetIndexFromCreature( talker ) );
- break;
- }
- }
- myself::ShowPage( talker, fnGoMatch );
- myself::SetCookie( talker, "md", 1 );
- }
- else
- {
- myself::ShowPage( talker, fnLowLevel );
- }
- }
- }
- EventHandler TIMER_FIRED_EX( talker, timer_id, i0, i1 )
- {
- if( timer_id == 100 )
- {
- if( ignore_time == 1 || gg::GetDateTime( 0, @DTF_HOUR ) > 9 && gg::GetDateTime( 0, @DTF_HOUR ) < 20 )
- {
- myself::AddTimerEx( 1, 60000 * time_before_start );
- }
- else
- {
- myself::AddTimerEx( 100, 1000 * 60 );
- }
- }
- if( timer_id == 1 )
- {
- myself::InstantTeleport( myself.sm, SpawnPosX1, SpawnPosY1, SpawnPosZ1 );
- gg::Announce( event_started );
- gg::Announce( register_instructions );
- gg::Announce( start_time_message );
- myself::AddTimerEx( 2, 1000 * 300 );
- myself::AddTimerEx( 777, 1000 * 1200 );
- }
- else if( timer_id == 2 )
- {
- myself::Shout( "Registration for 'MassPvP' will end in 15 minutes." );
- myself::AddTimerEx( 3, 1000 * 300 );
- }
- else if( timer_id == 3 )
- {
- myself::Shout( "Registration for 'MassPvP' will end in 10 minutes." );
- myself::AddTimerEx( 4, 1000 * 300 );
- }
- else if( timer_id == 4 )
- {
- myself::Shout( "Registration for 'MassPvP' will end in 5 minutes." );
- myself::AddTimerEx( 5, 1000 * 60 );
- }
- else if( timer_id == 5 )
- {
- myself::Shout( "Registration for 'MassPvP' will end in 4 minutes." );
- myself::AddTimerEx( 6, 1000 * 60 );
- }
- else if( timer_id == 6 )
- {
- myself::Shout( "Registration for 'MassPvP' will end in 3 minutes." );
- myself::AddTimerEx( 7, 1000 * 60 );
- }
- else if( timer_id == 7 )
- {
- myself::Shout( "Registration for 'MassPvP' will end in 2 minutes." );
- myself::AddTimerEx( 8, 1000 * 60 );
- }
- else if( timer_id == 8 )
- {
- myself::Shout( "Registration for 'MassPvP' will end in 1 minutes." );
- myself::AddTimerEx( 9, 1000 * 60 );
- }
- else if( timer_id == 777 )
- {
- for( i1 = 20; i1 < 100; i1 = i1 + 1 )
- {
- if( myself::GetGlobalMap( i1 ) != -1 )
- {
- talker = myself::GetCreatureFromIndex( myself::GetGlobalMap( i1 ) );
- if(gg::IsNull( talker )){myself.i_ai1 = myself.i_ai1-1;}
- }
- }
- for( i1 = 20; i1 < 100; i1 = i1 + 1 )
- {
- if( myself::GetGlobalMap( i1 ) != -1 )
- {
- talker = myself::GetCreatureFromIndex( myself::GetGlobalMap( i1 ) );
- if( !gg::IsNull( talker ) && myself::GetCookie( talker, "md" ) == 1 )
- {
- if( minimum_participants!= 0 && myself.i_ai1 < minimum_participants)
- {
- myself::SetCookie( talker, "md", 0 );
- }
- else
- {
- i0 = gg::Rand( 2 );
- if( i0 == 0 )
- {
- myself::InstantTeleport( talker, TelPosX1, TelPosY1, TelPosZ1 );
- myself::SetCookie( talker, "md", 2 );
- }
- else
- {
- myself::InstantTeleport( talker, TelPosX2, TelPosY2, TelPosZ2 );
- myself::SetCookie( talker, "md", 2 );
- }
- }
- }
- }
- }
- if( minimum_participants!= 0 && myself.i_ai1 < minimum_participants)
- {
- myself::Shout( "Not enough participants." );
- myself::Despawn();
- }
- }
- else if( timer_id == 9 )
- {
- myself::Shout( "Registration for 'MassPvP' is closed." );
- myself.i_ai0 = 1;
- myself::InstantTeleport( myself.sm, SpawnPosX2, SpawnPosY2, SpawnPosZ2 );
- myself::AddTimerEx( 10, 1000 * 20 );
- }
- else if( timer_id == 10 )
- {
- myself::Shout( "The fight will begin in 60 seconds..." );
- myself::AddTimerEx( 11, 1000 * 30 );
- }
- else if( timer_id == 11 )
- {
- myself::Shout( "30 seconds..." );
- myself::AddTimerEx( 12, 1000 * 10 );
- }
- else if( timer_id == 12 )
- {
- myself::Shout( "20 seconds..." );
- myself::AddTimerEx( 13, 1000 * 10 );
- }
- else if( timer_id == 13 )
- {
- myself::Shout( "10 seconds..." );
- myself::AddTimerEx( 14, 1000 * 5 );
- }
- else if( timer_id == 14 )
- {
- myself::Shout( "5 seconds..." );
- myself::AddTimerEx( 15, 1000 * 5 );
- }
- else if( timer_id == 15 )
- {
- myself::Castle_GateOpenClose2( DoorName1, 0 );
- myself::Castle_GateOpenClose2( DoorName2, 0 );
- myself::Shout( "GO, GO, GO!" );
- myself::Shout( "Gate will be closed..." );
- myself::AddTimerEx( 16, 1000 * 5 );
- }
- else if( timer_id == 16 )
- {
- myself::Shout( "The gates will be closed in 10 seconds!" );
- myself::AddTimerEx( 17, 1000 * 5 );
- }
- else if( timer_id == 17 )
- {
- myself::Shout( "The gates will be closed in 5 seconds!" );
- myself::AddTimerEx( 19, 1000 * 5 );
- }
- else if( timer_id == 19 )
- {
- myself::Castle_GateOpenClose2( DoorName1, 1 );
- myself::Castle_GateOpenClose2( DoorName2, 1 );
- if(use_skill_to_win == 0)
- {
- myself::Shout( event_finish_time_message );
- myself::AddTimerEx( 20, 60000 * event_time_no_skill );
- }
- else{
- myself::InstantTeleport( myself.sm, SpawnPosX3, SpawnPosY3, SpawnPosZ3 );
- myself::Shout( event_finish_time_message_skill);
- myself::AddTimerEx( 21, 60000 * event_time_skill );
- }
- }
- else if(timer_id == 20){
- myself::InstantTeleport( myself.sm, SpawnPosX3, SpawnPosY3, SpawnPosZ3 );
- myself::Shout( "Attack me to win the event !" );
- myself::AddTimerEx( 21, 60000 * 2 );
- }
- else if( timer_id == 21 )
- {
- myself::Shout( "Time up! MassPvP finished! without winners!" );
- myself::AddTimerEx( 22, 1 );
- myself::AddTimerEx( 23, 1 );
- }
- else if( timer_id == 22 )
- {
- for( i1 = 20; i1 < 100; i1 = i1 + 1 )
- {
- if( myself::GetGlobalMap( i1 ) != -1 )
- {
- talker = myself::GetCreatureFromIndex( myself::GetGlobalMap( i1 ) );
- if( myself::GetCookie( talker, "md" ) == 2 )
- {
- myself::InstantTeleport( talker, TownPosX, TownPosY, TownPosZ );
- myself::SetCookie( talker, "md", 3 );
- }
- myself::UnregisterGlobalMap( i1 );
- }
- }
- }
- else if( timer_id == 23 )
- {
- myself::Despawn();
- }
- }
- EventHandler ATTACKED( attacker, damage, skill_name_id, i0 )
- {
- if( use_skill_to_win == 0 || skill_name_id == skill_to_win_id )
- {
- if( myself::GetCookie( attacker, "md" ) == 2 )
- {
- if( Priz1 != 0 )
- {
- myself::GiveItem1( attacker, Priz1, Col1 );
- }
- if( Priz2 != 0 )
- {
- myself::GiveItem1( attacker, Priz2, Col2 );
- }
- if( Priz3 != 0 )
- {
- myself::GiveItem1( attacker, Priz3, Col3 );
- }
- myself::Shout( "The winner is : " + attacker.name + "." );
- myself::AddTimerEx( 22, 1 );
- myself::AddTimerEx( 23, 1 );
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement