Jump to content
  • 0
Sign in to follow this  
Pandaaa

Devil Square

Question

Heres the script i use.. i want to make after getting through of the mobs at level/round 3..

you can only kill 1 treasure box also the skills will be disabled after killing monster from round 3, so that in round 4 treasure box will appear you cant kill more than 2 (by casting skills ex. Storm Gust or any) you can only kill it by hitting normal attacks.. just once and warps you back to your savepoint..

 

//   Made:By Kirlein (Tyirial Script Concept)  //
// Devil Square based off the mmorpg Muonline  //
// Have Fun and feel free to leave suggestions //
//          Leave This intacted                //
// +   Translated by Stillhard aka Dewa        //
// +  Add times for 24 hours of play         //
// +  Add a little bit infos for newbie users  //
//      Completely rewrite by ~AnnieRuru~      //
// +  Tested with rAthena 17101                //
// http://rathena.org/board/topic/77632-devil-square/
/////////////////////////////////////////////////

prontera,156,185,5	script	Devil Square	100,{
	mes "[Devil Square Guardian]";
	mes "Welcome to the entrance door to ^FF0000Devil Square^000000";
	mes "If you failed or die, the door will be closed and you have to wait until it start to open again";
	next;
	if ( select ( "Enter", "Info", "Cancel " ) == 3 ) {
		mes "[Devil Square Guardian]";
		mes "See ya";
		close;
	}
	else if ( @menu == 2 ) { // Info
		mes "[Devil Square Guardian]";
		mes "There are 3 level monster you'll encounter";
		mes "Each level the enemies will grow stronger";
		mes "If you succeded to win all 3 level monster, you'll get the opportunity to open 10 Treasure Box with items, equips, and rare cards inside!!";
		close;
	}
	else if ( .start != 1 ) { // time
		mes "[Devil Square Guardian]";
		mes "Devil Square is now closed";
		mes "It'll be open again at:";
		mes "00:00 , 02:00 , 04:00 , 06:00"; // display your time here
		mes "08:00 , 10:00 , 12:00 , 14:00";
		mes "16:00 , 18:00 , 20:00 , 22:00";
		close;
	}
	else if ( baselevel < 70 || zeny < 20000 ) { // requirement
		mes "[Devil Square Guardian]";
		mes "Minimum base level to enter is 70";
		mes "The registration fee is 20,000z";
		close;
	}
	else if ( .register_num >= .register_limit ) { // room FULL
		mes "[Devil Square Guardian]";
		mes "I'm sorry but the Devil Square is FULL";
		mes "Maximum users to enter is "+ .register_limit +" players";
		close;
	}
	zeny = zeny - 20000;
	announce strcharinfo(0)+" has entered the Devil Square", bc_npc;
	percentheal 100,100;
	warp "ordeal_1-1",183,182;
	.register_aid[ .register_num ] = getcharid(3);
	.register_num++;
	end;

OnInit:
	.register_limit = 10; // maximum amount of players can play in this event
	.ann_survive = 30000; // the rate at which announce the players that still survive in devil square, in mili-seconds
	bindatcmd "devilsquare", strnpcinfo(0)+"::Onatcmd", 99,100;
	end;

Onatcmd:
	if ( compare( .@atcmd_parameters$, "on" ) || compare( .@atcmd_parameters$, "start" ) ) {
		if ( .start )
			dispbottom "Devil Square Event already started.";
		else
			goto L_Start;
	}
	else if ( compare( .@atcmd_parameters$, "off" ) || compare( .@atcmd_parameters$, "end" ) ) {
		if ( !.start )
			dispbottom "Devil Square Event not yet start.";
		else
			goto L_End;
	}
	else if ( !.start ) {
		dispbottom "Devil Square Event is currently not running.";
		dispbottom "Use "+ .@atcmd_command$ +" on | start to start the event.";
		dispbottom "Use "+ .@atcmd_command$ +" off | end to end this event";
	}
	else if ( .start == 1 )
		dispbottom "Devil Square Event is currently accepting participations.";
	else
		dispbottom "Devil Square Event is currently running. Currently on Round "+ .round +" with "+ .mob +" mobs left.";
	end;

L_Start:
OnClock0000: // yeah I know about OnMinute ... it just that more people knows better using OnClock
OnClock0200:
OnClock0400:
OnClock0600:
OnClock0800:
OnClock1000:
OnClock1200:
OnClock1400:
OnClock1600:
OnClock1800:
OnClock2000:
OnClock2200:
	if ( .start ) end;
	.start = 1;
	disablenpc "Exit#DS";
	mapannounce "ordeal_1-1","Devil Square is now closed", bc_map;
	getmapxy .@map$, .@x, .@y, 1;
	mapwarp "ordeal_1-1", .@map$, .@x, .@y;
	killmonsterall "ordeal_1-1";
	announce "Devil Square is OPENED NOW!! 5 Minutes until it starts..!!", bc_all;
	sleep 60000;
	announce "Devil Square will begin in 4 minutes..!!", bc_all;
	sleep 60000;
	announce "Devil Square will begin in 3 minutes..!!", bc_all;
	sleep 60000;
	announce "Devil Square will begin in 2 minutes..!!", bc_all;
	sleep 60000;
	announce "Devil Square will begin in 1 minutes..!!", bc_all;
	sleep 60000;
	announce "Devil Square is STARTED NOW !!", bc_all;
	if ( !.register_num )
		goto L_End;
	.start = 2;
	donpcevent strnpcinfo(0)+"::OnSurvive";
	.round = 1;
	.mob = 75;
	areamonster "ordeal_1-1",183,182,246,244,"[DS] SOLDIER SKELETON",1028,10,strnpcinfo(0)+"::Ondevildead";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC ARCHER",1189,15,strnpcinfo(0)+"::Ondevildead";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] SANDMAN",1165,10,strnpcinfo(0)+"::Ondevildead";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] ARCHER SKELETON",1016,15,strnpcinfo(0)+"::Ondevildead";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] MINOROUS",1149,15,strnpcinfo(0)+"::Ondevildead";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] REQUIEM",1164,10,strnpcinfo(0)+"::Ondevildead";
	end;

Ondevildead:
	.mob--;
	if ( .mob == 25 || .mob == 5 )
		announce "Devil Square : "+ .mob +" mobs to enter the 2nd round", bc_map;
	else if ( !.mob ) {
		announce "Devil Square will enter to 2nd round", bc_map;
		goto Ondevil2;
	}
	end;

Ondevil2:
	.round = 2;
	.mob = 70;
	areamonster "ordeal_1-1",183,182,246,244,"[DS] GARGOYLE",1253,15,strnpcinfo(0)+"::Ondevildead2";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] ALARM",1193,10,strnpcinfo(0)+"::Ondevildead2";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH ORC",1213,10,strnpcinfo(0)+"::Ondevildead2";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] INJUSTICE",1257,10,strnpcinfo(0)+"::Ondevildead2";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] MIMIC",1191,15,strnpcinfo(0)+"::Ondevildead2";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] WRAITH",1192,10,strnpcinfo(0)+"::Ondevildead2";
	end;

Ondevildead2:
	.mob--;
	if ( .mob == 25 || .mob == 5 )
		announce "Devil Square : "+ .mob +" mobs left to enter the 3rd round", bc_map;
	else if ( !.mob ) {
		announce "Devil Square will enter to 3rd round", bc_map;
		goto Ondevil3;
	}
	end;

Ondevil3:
	.round = 3;
	.mob = 58;
	areamonster "ordeal_1-1",183,182,246,244,"[DS] ANOLIAN",1206,15,strnpcinfo(0)+"::Ondevildead3";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] WANDERER",1208,15,strnpcinfo(0)+"::Ondevildead3";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] DEVIRUCHI",1109,10,strnpcinfo(0)+"::Ondevildead3";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] JOKER",1131,15,strnpcinfo(0)+"::Ondevildead3";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] MOONLIGHT",1150,2,strnpcinfo(0)+"::Ondevildead3";
	areamonster "ordeal_1-1",183,182,246,244,"[DS] DARK ILLUSION",1302,1,strnpcinfo(0)+"::Ondevildead3";
	end;

Ondevildead3:
	.mob--;
	if ( .mob == 25 || .mob == 5 )
		announce "Devil Square : "+ .mob +" mobs left to VICTORY", bc_map;
	else if ( !.mob ) {
		announce "Devil Square : CONGRATULATION - 10 Treasure Boxs will be yours now", bc_map;
		goto Ondevil4;
	}
	end;

Ondevil4:
	.round = 4;
	.mob = 10;
	monster "ordeal_1-1",231,250,"Treasure Box",1324,1,strnpcinfo(0)+"::Onboxdead";
	monster "ordeal_1-1",234,247,"Treasure Box",1328,1,strnpcinfo(0)+"::Onboxdead";
	monster "ordeal_1-1",237,244,"Treasure Box",1332,1,strnpcinfo(0)+"::Onboxdead";
	monster "ordeal_1-1",240,241,"Treasure Box",1336,1,strnpcinfo(0)+"::Onboxdead";
	monster "ordeal_1-1",243,238,"Treasure Box",1340,1,strnpcinfo(0)+"::Onboxdead";
	monster "ordeal_1-1",246,235,"Treasure Box",1344,1,strnpcinfo(0)+"::Onboxdead";
	monster "ordeal_1-1",249,232,"Treasure Box",1348,1,strnpcinfo(0)+"::Onboxdead";
	monster "ordeal_1-1",252,229,"Treasure Box",1352,1,strnpcinfo(0)+"::Onboxdead";
	monster "ordeal_1-1",249,241,"Treasure Box",1356,1,strnpcinfo(0)+"::Onboxdead";
	monster "ordeal_1-1",240,249,"Treasure Box",1360,1,strnpcinfo(0)+"::Onboxdead";
	end;

Onboxdead:
	.mob--;
	announce "Devil Square : "+ strcharinfo(0) +" has opened the treasure box at Devil Square", bc_all;
	if ( !.mob )
		goto L_End;
	end;

L_End:
	killmonsterall "ordeal_1-1";
	enablenpc "Exit#DS";
	deletearray .register_aid;
	.start = .round = .mob = .register_num = 0;
	end;

OnPCDieEvent:
OnPCLogoutEvent:
	if ( .start && strcharinfo(3) == "ordeal_1-1" ) {
		while ( .register_aid[.@i] != getcharid(3) && .@i < .register_num ) .@i++;
		deletearray .register_aid[.@i], 1;
		.register_num--;
		if ( !.register_num ) {
			announce "All players failed to survive at Devil Square", bc_all;
			killmonsterall "ordeal_1-1";
			goto L_End;
		}
	}
	end;

OnSurvive:
	while ( .start == 2 ) {
		mapannounce "ordeal_1-1", .register_num +" players is still survive at Devil Square", bc_map;
		sleep .ann_survive;
	}
	end;
}

ordeal_1-1,246,245,7	script	Exit#DS	51,{
	mes "[Exit]";
	mes "See ya";
	next;
	warp "SavePoint", 0,0 ;
	close;
}

ordeal_1-1	mapflag	nowarp
ordeal_1-1	mapflag	nowarpto
ordeal_1-1	mapflag	noteleport
ordeal_1-1	mapflag	nosave	SavePoint
ordeal_1-1	mapflag	nomemo
ordeal_1-1	mapflag	nobranch
ordeal_1-1	mapflag	nopenalty
ordeal_1-1	mapflag	noicewall

 

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.