dhaisuke 1 Posted March 27, 2015 Hi Im using Custom BG made by annieruru, just want to help how to add an NPC to join the event Player can use @joinbg or NPC with shuffle to join the Battleground here is my script - script custom_bg -1,{OnInit: .eventlasting = 30 * 60; // how long would the event last or it auto-reset. 30 *60 = 30 mins .min2start = 2; // minimum player to start .startingscore = 50; // score at start setarray .rewardwin, 7773,30; // premiar a equipe vencedora setarray .rewardlose, 7773,15; // premiar a equipe vencedora .rewardwinsize = getarraysize( .rewardwin ); .rewardlosesize = getarraysize( .rewardlose ); bindatcmd "bg", strnpcinfo(0)+"::OnJoin"; bindatcmd "leavebg", strnpcinfo(0)+"::OnLeave"; 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ê deixou de participar da 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ê já 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 ) ) { // player has went into another event 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 = rand(1,3); .red = createbgid( "guild_vs"+ .map, 20,50, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead" ); .blue = createbgid( "guild_vs"+ .map, 80,50, 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, "guild_vs"+ .map, 20,50; bg_warp .blue, "guild_vs"+ .map, 80,50; .score[1] = .score[2] = .startingscore; bg_updatescore "guild_vs"+ .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; 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; callsub L_reward, .blue, .rewardwin, .rewardwinsize; callsub L_reward, .red, .rewardlose, .rewardlosesize; } else { mapannounce "guild_vs"+ .map, "Empate !", bc_all; 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 = .map = 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 "guild_vs"+ .map, .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 100,100; 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 "guild_vs"+ .map, "Todos "+ .teamname$[ getarg(0) ] +" membros da equipe saiu. !", bc_all, 0xFF3333; .score[ getarg(0) ] = 0; awake strnpcinfo(0); end;}guild_vs3 mapflag battleground 2guild_vs3 mapflag nosave SavePointguild_vs3 mapflag nowarpguild_vs3 mapflag nowarptoguild_vs3 mapflag noreturnguild_vs3 mapflag noteleportguild_vs3 mapflag nomemoguild_vs3 mapflag nopenaltyguild_vs3 mapflag nobranchguild_vs3 mapflag noicewallguild_vs1 mapflag battleground 2guild_vs1 mapflag nosave SavePointguild_vs1 mapflag nowarpguild_vs1 mapflag nowarptoguild_vs1 mapflag noreturnguild_vs1 mapflag noteleportguild_vs1 mapflag nomemoguild_vs1 mapflag nopenaltyguild_vs1 mapflag nobranchguild_vs1 mapflag noicewall//------------------------------ FUNÇÃO --------------------------------------------------// callfunc "shuffle", <min num>, <max num>, <output array> {, <count> };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 .@[member=Max], -1000000000, 1000000000; .@min = 1; .@[member=Max] = 5; callfunc "shuffle__", .@min, .@[member=Max], .@output$, 100; dispbottom implode( .@output$, "," );}*/ Quote Share this post Link to post Share on other sites
0 - Mariel 2 Posted March 28, 2015 Just wait for Dastgir's project. <3 You can donate to give a helping hand to him. [WIP]ExtendedBG Quote Share this post Link to post Share on other sites
Hi Im using Custom BG made by annieruru, just want to help how to add an NPC to join the event
Player can use @joinbg or NPC with shuffle to join the Battleground
here is my script
Share this post
Link to post
Share on other sites