- script sdkfksdfjsdfgdf -1,{ OnInit: .eventlasting = 30 * 60; // Tempo do último evento ou auto-reset. 30 * 60 = 30 minutos .min2start = 2; // Quantidade mínima de player para iniciar a BG .startingscore = 50; // Score inicial setarray .rewardwin, 7773,30; // premiar a equipe vencedora setarray .rewardlose, 7773,15; // premiar a equipe vencedora setarray .Map$, "florian", "bat_c01", "guild_vs3"; .rewardwinsize = getarraysize( .rewardwin ); .rewardlosesize = getarraysize( .rewardlose ); .totalmap = getarraysize( .Map$ ); bindatcmd "bg", strnpcinfo(0)+"::OnJoin"; bindatcmd "leavebg", strnpcinfo(0)+"::OnLeave"; for ( .@i = 0; .@i < .totalmap; .@i++ ) { setmapflag .Map$[.@i], mf_battleground, 2; setmapflag .Map$[.@i], mf_nosave; setmapflag .Map$[.@i], mf_nowarp; setmapflag .Map$[.@i], mf_nowarpto; setmapflag .Map$[.@i], mf_noreturn; setmapflag .Map$[.@i], mf_noteleport; setmapflag .Map$[.@i], mf_nomemo; setmapflag .Map$[.@i], mf_noexppenalty; setmapflag .Map$[.@i], mf_nobranch; setmapflag .Map$[.@i], mf_noicewall; setmapflag .Map$[.@i], mf_gvg; } end; OnLeave: while ( .signup_aid[.@i] != getcharid(3) && .@i < .signup_count ) .@i++; if ( .@i == .signup_count ) { dispbottom "Você ainda não se inscreveu na BG."; end; } deletearray .signup_aid[.@i], 1; .signup_count--; dispbottom "Você tem deixar o registro desta BG."; end; OnJoin: if ( getmapflag( strcharinfo(3), mf_nowarp ) || getmapflag( strcharinfo(3), mf_nowarpto ) ) { dispbottom "Você não pode se inscrever para BG neste mapa."; end; } while ( .signup_aid[.@i] != getcharid(3) && .@i < .signup_count ) .@i++; if ( .@i < .signup_count ) { dispbottom "Você ainda não se inscreveu na BG."; end; } .signup_aid[ .signup_count ] = getcharid(3); .signup_count++; dispbottom "Você se registrou na BG."; // .@i = 1; // DEBUG // .@signup_name$ = rid2name( .signup_aid[0] ); // while ( .signup_aid[.@i] ) { // .@signup_name$ = .@signup_name$ +","+ rid2name( .signup_aid[.@i] ); // .@i++; // } // dispbottom "[Debug] Atualmente tem "+ .signup_count +" e eles são "+ .@signup_name$; L_Start: for ( .@i = 0; .@i < .signup_count; .@i++ ) { if ( attachrid( .signup_aid[.@i] ) ) { if ( getmapflag( strcharinfo(3), mf_nowarp ) ) { // O jogador entrou em um outro evento. deletearray .signup_aid[.@i], 1; } } else { deletearray .signup_aid[.@i], 1; .signup_count--; .@i--; } } if ( .start || .signup_count < .min2start ) { announce "Batalha Campal -- [Field of Death] -- +"+ .signup_count +" jogadores para começar -- Digite @bg para participar!", bc_all, 0xFFA500; end; } announce "Batalha Campal -- [Field of Death] -- Começou!", bc_all, 0xFFA500; .start = 1; .@map$ = .Map$[ rand(3) ]; .red = createbgid( .@map$, 0,0, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead" ); .blue = createbgid( .@map$, 0,0, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead" ); callfunc "shuffle__", 0, .min2start -1, .@r; .@modulus = rand(2); for ( .@i = 0; .@i < .signup_count; .@i++ ) setbgid ( .@i %2 == .@modulus )? .red : .blue, .signup_aid[ .@r[.@i] ]; deletearray .signup_aid, .min2start; .signup_count -= .min2start; bg_warp .red, .@map$, 0,0; bg_warp .blue, .@map$, 0,0; .score[1] = .score[2] = .startingscore; bg_updatescore .@map$, .score[1], .score[2]; sleep .eventlasting * 1000; if ( .start == 1 ) { if ( .score[1] > .score[2] ) { mapannounce "guild_vs"+ .map, " Time Vermelho ganhou!", bc_all, 0xFFA500; callsub L_reward, .red, .rewardwin, .rewardwinsize; callsub L_reward, .blue, .rewardlose, .rewardlosesize; } else if ( .score[1] < .score[2] ) { mapannounce "guild_vs"+ .map, " Time Azul ganhou!", bc_all, 0xFFA500; callsub L_reward, .blue, .rewardwin, .rewardwinsize; callsub L_reward, .red, .rewardlose, .rewardlosesize; } else { mapannounce "guild_vs"+ .map, "Empate !", bc_all, 0xFFA500; callsub L_reward, .red, .rewardlose, .rewardlosesize; callsub L_reward, .blue, .rewardlose, .rewardlosesize; } } bg_warp .red, "prontera", 155,182; bg_warp .blue, "prontera", 158,182; bg_destroy .red; bg_destroy .blue; .start = 0; deletearray .score; goto L_Start; L_reward: getbgusers getarg(0); for ( .@i = 0; .@i < $@arenamembersnum; .@i++ ) for ( .@j = 0; .@j < getarg(2); .@j += 2 ) getitem getelementofarray( getarg(1), .@j ), getelementofarray( getarg(1), .@j +1 ), $@arenamembers[.@i]; return; OnRedDead: callsub L_dead, 1; OnBlueDead: callsub L_dead, 2; L_dead: .score[ getarg(0) ]--; bg_updatescore strcharinfo(3), .score[1], .score[2]; if ( !.score[ getarg(0) ] ) awake strnpcinfo(0); while ( checkcell( strcharinfo(3), .@x = rand(200), .@y = rand(200), cell_chknopass ) ); bg_team_setxy getcharid(4), .@x, .@y; sleep2 1250; percentheal 0,0; if ( getmapflag( strcharinfo(3), mf_battleground ) ) warp strcharinfo(3), 0,0; end; OnRedQuit: callsub L_quit, 1, .red; OnBlueQuit: callsub L_quit, 2, .blue; L_quit: percentheal 100, 100; if ( bg_get_data( getarg(1), 0 ) ) end; mapannounce strcharinfo(3), "Todos "+ .teamname$[ getarg(0) ] +"membros da equipe saiu!", bc_all, 0xFF3333; .score[ getarg(0) ] = 0; awake strnpcinfo(0); end; } //Tricar para florian prontera mapflag battleground 2 prontera mapflag nosave SavePoint prontera mapflag nowarp prontera mapflag nowarpto prontera mapflag noreturn prontera mapflag noteleport prontera mapflag nomemo prontera mapflag nopenalty prontera mapflag nobranch prontera mapflag noicewall bat_c01 mapflag battleground 2 bat_c01 mapflag nosave SavePoint bat_c01 mapflag nowarp bat_c01 mapflag nowarpto bat_c01 mapflag noreturn bat_c01 mapflag noteleport bat_c01 mapflag nomemo bat_c01 mapflag nopenalty bat_c01 mapflag nobranch bat_c01 mapflag noicewall guild_vs3 mapflag battleground 2 guild_vs3 mapflag nosave SavePoint guild_vs3 mapflag nowarp guild_vs3 mapflag nowarpto guild_vs3 mapflag noreturn guild_vs3 mapflag noteleport guild_vs3 mapflag nomemo guild_vs3 mapflag nopenalty guild_vs3 mapflag nobranch guild_vs3 mapflag noicewall //------------------------------ FUN??O -------------------------------------------------- //---------------------------------------------------------------------------------------- // callfunc "shuffle", , , {, }; function script shuffle__ { .@static = getarg(0); .@range = getarg(1) +1 - .@static; .@count = getarg(3, 0); 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; set getelementofarray( getarg(2), .@i ), .@r + .@static; if ( .@save < .@count ) set getelementofarray( getarg(2), .@save ), .@i + .@static; } .@i++; } return .@count; } /* prontera,156,184,5 script kjdshfksfjh 100,{ // input .@min, -1000000000, 1000000000; // input .@max, -1000000000, 1000000000; .@min = 1; .@max = 5; callfunc "shuffle__", .@min, .@max, .@output$, 100; dispbottom implode( .@output$, "," ); } */ //------------------------------ Quit AFK -------------------------------------------------- //---------------------------------------------------------------------------------------- - script afk_script -1,{ // Config OnInit: .sleeploop = 2000; // every 1 second .afk = 4; // loop 180 times of 1 second = 3 minutes to execute setarray .@map$, "florian", "bat_c01", "guild_vs3"; // battlegrounds .@size = getarraysize( .@map$ ); for ( .@i = 0; .@i < .@size; .@i++ ) setmapflag .@map$[.@i], mf_loadevent; .Map$ = ":"+ implode( .@map$, ":" ) +":"; .idle = .sleeploop * .afk / 1000; end; // what to do when triggered L_trigger: // dispbottom "Você est? AFK"+ .idle +" segudos"; if ( getcharid(4) ) bg_leave; warp "SavePoint", 0,0; end; // function OnPCLoadMapEvent: while ( true ) { if ( compare( .Map$, ":"+ strcharinfo(3) +":" ) ) { if ( checkidle() >= .idle ) goto L_trigger; // dispbottom "Você est? AFK "+ checkidle() +" segundos"; sleep2 .sleeploop; } else break; } end; }