// 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 :P //
// + Add a little bit infos for newbie users //
// Completely rewrite by ~AnnieRuru~ //
// + Tested with rAthena 17101 //
// http://rathena.org/board/topic/77632-devil-square/
/////////////////////////////////////////////////
geffen,107,148,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:
OnClock1539:
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!! 2 Minutes until it starts..!!", bc_all;
sleep 30000;
announce "Devil Square will begin in 1 minutes..!!", bc_all;
sleep 30000;
announce "Devil Square will begin in 1 minutes..!!", bc_all;
sleep 30000;
announce "Devil Square will begin in 1 minutes..!!", bc_all;
sleep 10000;
announce "Devil Square will begin in 1 minutes..!!", bc_all;
sleep 10000;
announce "Devil Square is STARTED NOW !!", bc_all;
if ( !.register_num )
goto L_End;
.start = 2;
donpcevent strnpcinfo(0)+"::OnSurvive";
.round = 1;
.mob = 27;
areamonster "ordeal_1-1",183,182,246,244,"[DS] JUGGERNAUT",2399,1,strnpcinfo(0)+"::Ondevildead";
areamonster "ordeal_1-1",183,182,246,244,"[DS] TOAD",1089,15,strnpcinfo(0)+"::Ondevildead";
areamonster "ordeal_1-1",183,182,246,244,"[DS] MEW",2393,5,strnpcinfo(0)+"::Ondevildead";
areamonster "ordeal_1-1",183,182,246,244,"[DS] THANATOS",1708,2,strnpcinfo(0)+"::Ondevildead";
areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH WIZARD",1645,1,strnpcinfo(0)+"::Ondevildead";
areamonster "ordeal_1-1",183,182,246,244,"[DS] SANTA PORING",1062,3,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 == 0 ) {
announce "Devil Square will enter to 2nd round", bc_map;
goto Ondevil2;
}
end;
Ondevil2:
.round = 2;
.mob = 17;
areamonster "ordeal_1-1",183,182,246,244,"[DS] JUGGERNAUT",2399,1,strnpcinfo(0)+"::Ondevildead2";
areamonster "ordeal_1-1",183,182,246,244,"[DS] MUTANT DRAGONOID",1262,10,strnpcinfo(0)+"::Ondevildead2";
areamonster "ordeal_1-1",183,182,246,244,"[DS] SANTA PORING",1062,3,strnpcinfo(0)+"::Ondevildead2";
areamonster "ordeal_1-1",183,182,246,244,"[DS] VALKYRIE RANDGRIS",1751,1,strnpcinfo(0)+"::Ondevildead2";
areamonster "ordeal_1-1",183,182,246,244,"[DS] LORD KNIGHT",1646,1,strnpcinfo(0)+"::Ondevildead2";
areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH PRIEST",1649,1,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 = 13;
areamonster "ordeal_1-1",183,182,246,244,"[DS] JUGGERNAUT",2399,1,strnpcinfo(0)+"::Ondevildead3";
areamonster "ordeal_1-1",183,182,246,244,"[DS] ENTWEIHEN CROTHEN",1957,3,strnpcinfo(0)+"::Ondevildead3";
areamonster "ordeal_1-1",183,182,246,244,"[DS] BAKONAWA",2409,1,strnpcinfo(0)+"::Ondevildead3";
areamonster "ordeal_1-1",183,182,246,244,"[DS] ASSASSIN CROSS EREMES",1647,2,strnpcinfo(0)+"::Ondevildead3";
areamonster "ordeal_1-1",183,182,246,244,"[DS] WHITESMITH HARWORD",1648,1,strnpcinfo(0)+"::Ondevildead3";
areamonster "ordeal_1-1",183,182,246,244,"[DS] SANTA PORING",1062,5,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 = 15;
monster "ordeal_1-1",231,250,"Treasure Box",1324,5,strnpcinfo(0)+"::Onboxdead";
monster "ordeal_1-1",234,247,"Treasure Box",1328,10,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
i cant trigger round 2 even if all the monster are killed. 6 players survived please help thanks!
Question
Quazy
// 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 :P // // + Add a little bit infos for newbie users // // Completely rewrite by ~AnnieRuru~ // // + Tested with rAthena 17101 // // http://rathena.org/board/topic/77632-devil-square/ ///////////////////////////////////////////////// geffen,107,148,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: OnClock1539: 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!! 2 Minutes until it starts..!!", bc_all; sleep 30000; announce "Devil Square will begin in 1 minutes..!!", bc_all; sleep 30000; announce "Devil Square will begin in 1 minutes..!!", bc_all; sleep 30000; announce "Devil Square will begin in 1 minutes..!!", bc_all; sleep 10000; announce "Devil Square will begin in 1 minutes..!!", bc_all; sleep 10000; announce "Devil Square is STARTED NOW !!", bc_all; if ( !.register_num ) goto L_End; .start = 2; donpcevent strnpcinfo(0)+"::OnSurvive"; .round = 1; .mob = 27; areamonster "ordeal_1-1",183,182,246,244,"[DS] JUGGERNAUT",2399,1,strnpcinfo(0)+"::Ondevildead"; areamonster "ordeal_1-1",183,182,246,244,"[DS] TOAD",1089,15,strnpcinfo(0)+"::Ondevildead"; areamonster "ordeal_1-1",183,182,246,244,"[DS] MEW",2393,5,strnpcinfo(0)+"::Ondevildead"; areamonster "ordeal_1-1",183,182,246,244,"[DS] THANATOS",1708,2,strnpcinfo(0)+"::Ondevildead"; areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH WIZARD",1645,1,strnpcinfo(0)+"::Ondevildead"; areamonster "ordeal_1-1",183,182,246,244,"[DS] SANTA PORING",1062,3,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 == 0 ) { announce "Devil Square will enter to 2nd round", bc_map; goto Ondevil2; } end; Ondevil2: .round = 2; .mob = 17; areamonster "ordeal_1-1",183,182,246,244,"[DS] JUGGERNAUT",2399,1,strnpcinfo(0)+"::Ondevildead2"; areamonster "ordeal_1-1",183,182,246,244,"[DS] MUTANT DRAGONOID",1262,10,strnpcinfo(0)+"::Ondevildead2"; areamonster "ordeal_1-1",183,182,246,244,"[DS] SANTA PORING",1062,3,strnpcinfo(0)+"::Ondevildead2"; areamonster "ordeal_1-1",183,182,246,244,"[DS] VALKYRIE RANDGRIS",1751,1,strnpcinfo(0)+"::Ondevildead2"; areamonster "ordeal_1-1",183,182,246,244,"[DS] LORD KNIGHT",1646,1,strnpcinfo(0)+"::Ondevildead2"; areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH PRIEST",1649,1,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 = 13; areamonster "ordeal_1-1",183,182,246,244,"[DS] JUGGERNAUT",2399,1,strnpcinfo(0)+"::Ondevildead3"; areamonster "ordeal_1-1",183,182,246,244,"[DS] ENTWEIHEN CROTHEN",1957,3,strnpcinfo(0)+"::Ondevildead3"; areamonster "ordeal_1-1",183,182,246,244,"[DS] BAKONAWA",2409,1,strnpcinfo(0)+"::Ondevildead3"; areamonster "ordeal_1-1",183,182,246,244,"[DS] ASSASSIN CROSS EREMES",1647,2,strnpcinfo(0)+"::Ondevildead3"; areamonster "ordeal_1-1",183,182,246,244,"[DS] WHITESMITH HARWORD",1648,1,strnpcinfo(0)+"::Ondevildead3"; areamonster "ordeal_1-1",183,182,246,244,"[DS] SANTA PORING",1062,5,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 = 15; monster "ordeal_1-1",231,250,"Treasure Box",1324,5,strnpcinfo(0)+"::Onboxdead"; monster "ordeal_1-1",234,247,"Treasure Box",1328,10,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
i cant trigger round 2 even if all the monster are killed. 6 players survived please help thanks!
Link to comment
Share on other sites
7 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.