prontera,152,178,5 script bg_pvp#random 4_M_JOB_KNIGHT1,{ end; OnInit: .minplayer2start = 2; // minimum players to start (ex. if 3vs3, set to 3) .eventlasting = 20*60; // event duration before auto-reset (20 minutes * seconds) setarray .rewarditem[0], // rewards for the winning team: 501, 10; // , waitingroom "bg_pvp", .minplayer2start *2 +1, strnpcinfo(0) +"::OnStart", .minplayer2start *2; getmapxy .@map$, .@x, .@y, UNITTYPE_NPC; mapwarp "guild_vs3", .@map$, .@x, .@y; end; OnStart: if ( getwaitingroomstate(0) < .minplayer2start *2 ) end; getmapxy .@map$, .@x, .@y, UNITTYPE_NPC; warpwaitingpc .@map$, .@x, .@y, .minplayer2start *2; .red = bg_create_team( "guild_vs3", 13,50 ); .blue = bg_create_team( "guild_vs3", 86,50 ); .queue_red = queue(); .queue_blue = queue(); queueopt .queue_red, QUEUEOPT_DEATH, strnpcinfo(0)+"::OnRedDead"; queueopt .queue_red, QUEUEOPT_LOGOUT, strnpcinfo(0)+"::OnRedQuit"; queueopt .queue_red, QUEUEOPT_MAPCHANGE, strnpcinfo(0)+"::OnRedMapChange"; queueopt .queue_blue, QUEUEOPT_DEATH, strnpcinfo(0)+"::OnBlueDead"; queueopt .queue_blue, QUEUEOPT_LOGOUT, strnpcinfo(0)+"::OnBlueQuit"; queueopt .queue_blue, QUEUEOPT_MAPCHANGE, strnpcinfo(0)+"::OnBlueMapChange"; for ( .@i = 0; .@i < $@warpwaitingpcnum; ++.@i ) { bg_join_team ( .@i % 2 )? .red : .blue, $@warpwaitingpc[.@i]; queueadd ( .@i % 2 )? .queue_red : .queue_blue, $@warpwaitingpc[.@i]; } delwaitingroom strnpcinfo(0); bg_warp .red, "guild_vs3", 13,50; bg_warp .blue, "guild_vs3", 86,50; .score[1] = .score[2] = .minplayer2start; bg_updatescore "guild_vs3", .score[1], .score[2]; sleep .eventlasting * 1000; if ( .score[1] > .score[2] ) { mapannounce "guild_vs3", "- Red Team is victorious! -", bc_map; callsub L_Reward, .queue_red; } else if ( .score[1] < .score[2] ) { mapannounce "guild_vs3", "- Blue Team is victorious! -", bc_map; callsub L_Reward, .queue_blue; } else mapannounce "guild_vs3", "- The match has ended in a draw! -", bc_map; mapwarp "guild_vs3","prontera",152,178; bg_destroy .red; bg_destroy .blue; queuedel .queue_red; queuedel .queue_blue; waitingroom "bg_pvp", .minplayer2start *2 +1, strnpcinfo(0) +"::OnStart", .minplayer2start *2; end; L_Reward: .@it = queueiterator( getarg(0) ); for ( .@aid = qiget(.@it); qicheck(.@it); .@aid = qiget(.@it) ) getitem .rewarditem[0], .rewarditem[1], .@aid; qiclear .@it; return; OnRedDead: callsub L_Dead, 1, .queue_red; OnBlueDead: callsub L_Dead, 2, .queue_blue; L_Dead: --.score[ getarg(0) ]; bg_updatescore "guild_vs3", .score[1], .score[2]; bg_leave; queueremove getarg(1), getcharid(3); warp "Save", 0,0; if ( !.score[ getarg(0) ] ) awake strnpcinfo(0); sleep2 1250; percentheal 100,100; end; OnRedMapChange: if ( @Queue_Destination_Map$ == "guild_vs3" ) end; OnRedQuit: callsub L_Quit, 1, .queue_red; OnBlueMapChange: if ( @Queue_Destination_Map$ == "guild_vs3" ) end; OnBlueQuit: callsub L_Quit, 2, .queue_blue; L_Quit: --.score[ getarg(0) ]; bg_updatescore "guild_vs3", .score[1], .score[2]; bg_leave; queueremove getarg(1), getcharid(3); if ( !.score[ getarg(0) ] ) awake strnpcinfo(0); percentheal 100, 100; end; } guild_vs3 mapflag battleground 2 guild_vs3 mapflag nosave SavePoint guild_vs3 mapflag nowarp guild_vs3 mapflag nowarpto guild_vs3 mapflag noteleport guild_vs3 mapflag nomemo guild_vs3 mapflag nopenalty guild_vs3 mapflag nobranch guild_vs3 mapflag noicewall