Jump to content
  • 0
Sign in to follow this  
dhaisuke

Custom BG how to add NPC

Question

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$, "," );}*/ 

 

 

 

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.