I got this script here in Rathena also. and I tried it on my server. What I want to happen is:
1.) I can use skills while inside the emperium room.
And there is one problem with the ladder. For example
" Top 1: 1.5 Second "
and I tried once again to enter with slower time. and there results were..
" Top 1: 1.5 Second "
" Top 2: 3 Seconds "
" Top 3: 1.5 Second "
it duplicates the top 1 record. and also when I got a record between top 1 and top 2 like "2.3 Seconds" It will be like this.
" Top 1: 1.5 Second "
" Top 2: 2.3 Seconds "
" Top 3: 1.5 Second "
It overwrites the top 2 record which is "Top 2: 3 Seconds". It is also the same with Top 1 Record. For example I got "1.2 Seconds". It will be like this.
" Top 1: 1.2 Seconds "
" Top 2: 2.3 Seconds "
" Top 3: 1.5 Second "
where it should be like this:
" Top 1: 1.2 Seconds "
" Top 2: 1.5 Seconds "
" Top 3: 2.3 Seconds "
prontera,140,177,5 script Emperium Breaker 1288,{
// What Map will be used
set .Map$,"job3_arch01";
// How many Top Breaker will be Recorded
set .TopRank,3;
// Message to Inform Players while inside the Room
setarray .Instruction$[0],
"You need a guild to be able to hit the Emperium, create one with the Emperium i have you if you don't have any. Please read carefully.",
"This room is to test how quick you can break an Emperium.",
"So get prepared, the Emperium will spawn in a few seconds.",
"When you enter there, you rill recieve Butterfly Wings so you can return when you finish, be prepared.";
while( 1 ){
mes "Emperium Breaker Room to test how quick you destroy it.";
mes "You can compare too the records of other players.";
mes "";
mes "^ED1ADC***** Note: You must be in a GUILD for you to break the Emperium Inside! *****";
next;
switch( select( ( getmapusers( .Map$ ) )?"^FF0000No available":"^0000FFAvailable^000000",
"Top ^FF0000"+.TopRank+"^000000 Record",
( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Room",
( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Ladder" )){
Case 1:
if( getmapusers( .Map$ ) ){
mes "There is another player, please wait until the player ends.";
next;
break;
}
warp .Map$,0,0;
getitem 714,1; // Emperium if they don't have a guild they can easly create one and test on the Emperium Room
killmonster .Map$,"All";
// removemapflag .Map$,mf_noskill;
donpcevent strnpcinfo(0)+"::OnReady";
end;
Case 2:
for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){
if( !$TopRankTime[.@i] ) break;
mes "^FF0000Top "+( .@i + 1 )+" : ^0000FF"+$TopName$[.@i]+" ";
mes "^FF0000Time : ^ED1ADC[ "+$TopRankTime[.@i]/1000+"."+$TopRankTime[.@i]%1000+" Sec. ]^000000 ";
}
next;
break;
Case 3:
mapannounce .Map$,"El GM reinicio los record del Emperium Breaker.",0,0x00FF00;
killmonster .Map$,"All";
mapwarp .Map$,"prontera",155,178;
mes "All rooms have resetted.";
next;
break;
Case 4:
switch( select( "^0000FFAll Player^000000:^FF0000One Player^000000" ) ){
Case 1:
deletearray $TopRankTime[0],getarraysize( $TopRankTime );
deletearray $TopName$[0],getarraysize( $TopName$ );
mes "RESETED WHOLE LADDER.";
break;
Case 2:
mes "Please input the ^FF0000EXACT NAME^000000 of player you want to delete.";
input .Name$;
for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){
if( .Name$ == $TopName$[.@i] ){
deletearray $TopName$[.@i],1;
deletearray $TopRankTime[.@i],1;
mes "Removed ^FF0000"+.Name$+"^000000 from the List.";
}
}
}
next;
break;
}
}
OnReady:
for( set .@i,0; .@i < getarraysize( .Instruction$ ); set .@i,.@i + 1 ){
mapannounce .Map$,.Instruction$[.@i],0,0x00FF00;
}
for( set .@i,5; .@i > 0; set .@i,.@i - 1 ){
mapannounce .Map$," : "+.@i+" seconds left.",0,0x00FF00;
}
//mapannounce .Map$,"Hit the Emperium Now and Skills Disabled.",0,0x00FF00;
setmapflag .Map$,mf_noskill;
monster .Map$,29,27,"Breaker Test",1288,1,strnpcinfo(0)+"::OnBreaked";
set .Record,0;
initnpctimer;
end;
OnTimer600000:
if( !mobcount( .Map$,strnpcinfo(0)+"::OnBreaked" ) ) end;
mapannounce .Map$,"You spent too much time. i think you are AFK , so you are out.",0,0xED1ADC;
mapwarp .Map$,"prontera",155,178;
stopnpctimer;
end;
OnBreaked:
set .Time,getnpctimer(0);
copyarray .@tempName$[0],$TopName$[0],getarraysize( $TopName$ );
copyarray .@tempRecord[0],$TopRankTime[0],getarraysize( $TopRankTime[0] );
set LatestRecord,.Time;
for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){
if( .Time < $TopRankTime[.@i] || !$TopRankTime[.@i] ){
set $TopRankTime[.@i],.Time;
set $TopName$[.@i],strcharinfo(0);
copyarray $TopRankTime[.@i + 1],.@tempRecord[0],getarraysize( .@tempRecord );
copyarray $TopName$[.@i + 1],.@tempName$[0],getarraysize( .@tempName$ );
announce "[ "+strcharinfo(0)+" ] Got the Ranking "+( .@i + 1 )+" on the Emperium Breaker Room with a record of "+.Time/1000+"."+.Time%1000+" seconds !!!",bc_all,0xED1ADC;
break;
}
}
stopnpctimer;
announce "Time tooked : "+.Time/1000+"."+.Time%1000+" Seconds. ",bc_self,0xED1ADC;
// removemapflag .Map$,mf_noskill;
mapwarp .Map$,"prontera",155,178; //here is the place of the npc
end;
}
job3_arch01 mapflag nocommand 50
job3_arch01 mapflag gvg on
job3_arch01 mapflag gvg_castle
job3_arch01 mapflag monster_noteleport
job3_arch01 mapflag nosave SavePoint