function script shuffle__ {
.@range
= getarg(1) +1 - .@
static;
if ( .@range <= 0 )
return 0;
if ( !.@count || .@count > .@range )
.@count = .@range;
while ( .@i < .@count ) {
.@r
= .@save
= rand( .@i, .@range
-1 ) ;
if ( !.@tmp1[.@i] ) {
.@r = .@tmp1[.@r] ? .@tmp2[.@r] : .@r;
.@tmp2[.@i] = .@r;
.@tmp2[.@save] = .@i;
.@tmp1[.@save] = 1;
if ( .@save < .@count )
}
.@i++;
}
return .@count;
}
prontera,152,178,5 script bg_pvp 100,{
OnInit:
.eventlasting = 3; // duration in minutes
setarray .
rewardwin,
501,
10,
502,
5,
503,
3;
// reward to winning team
setarray .
rewardlose,
501,
5,
502,
3,
503,
1;
// reward to losing team
setarray .
rewarddraw,
501,
3,
502,
1;
// reward to both teams when draw
OnStart:
}
}
'mapname$ = .@ins +"BG";
'teamname$['red] = "Red";
'teamname$['blue] = "Blue";
callfunc "shuffle__",
0, $@arenamembersnum
-1, .@r;
for ( .@i = 0; .@i < $@arenamembersnum; .@i++ )
setbgid ( .@i % 2 == .@modulus )? 'red : 'blue, $@arenamembers[ .@r[.@i] ];
}
guild_vs3,0,0,0 script battleground_ins -1,{
OnInstanceInit:
if ( 'score['red] > 'score['blue] ) {
mapannounce 'mapname$,
"- Red Team is victorious! -",
bc_map;
}
else if ( 'score['red] < 'score['blue] ) {
mapannounce 'mapname$,
"- Blue Team is victorious! -",
bc_map;
}
else { // same score
mapannounce 'mapname$,
"- The match has ended in a draw! -",
bc_map;
}
// bg_match_over "KVM (Level 80 and up)";
mapwarp .@ins
+"BG",
"prontera",
152,
178;
L_reward:
for ( .@i = 0; .@i < $@arenamembersnum; .@i++ )
for ( .@j
= 0; .@j <
getarg(2); .@j
+= 2 )
return;
L_Dead:
L_Quit:
}
guild_vs3 mapflag battleground 2
guild_vs3 mapflag nowarp
guild_vs3 mapflag nowarpto
guild_vs3 mapflag noreturn
guild_vs3 mapflag nomemo
guild_vs3 mapflag noteleport
guild_vs3 mapflag nopenalty
guild_vs3 mapflag nobranch
guild_vs3 mapflag noicewall
guild_vs3 mapflag src4instance