Jump to content
  • 0

Remove fake NPC and add real NPC


Yukaiii

Question


  • Group:  Members
  • Topic Count:  48
  • Topics Per Day:  0.01
  • Content Count:  111
  • Reputation:   9
  • Joined:  11/20/13
  • Last Seen:  

Good morning guys!

Guys, how do I put a physical NPC in this script?

I even got it but it doesn't work.

 

I'm sorry, I'm really bad at scripting.

I even tried haha

//===== rAthena Script ============================================
//= Party vs Party
//===== By: =======================================================
//= AnnieRuru
//===== Current Version: ==========================================
//= 0.2
//===== Compatible With: ==========================================
//= rathena 2020-09-23
//===== Description: ==============================================
//= GM has to manually pick which 2 party to fight
//===== Topic =====================================================
//= https://rathena.org/board/topic/125939-looking-for-a-tournament-npc-sytem-pt-vs-pt/
//===== Additional Comments: ======================================
//= came over to rathena forum for a while, glad to see potential members on the other side
//=================================================================

-	script	PartyVsParty	FAKE_NPC,{
OnInit:
	.eventlasting = 60; // 60 seconds
	.partysize = 1;

	bindatcmd "startmatch", strnpcinfo(3)+"::OnWarStart", 99,99;
	setarray .available_type$, " ^00FF00Available^000000", " ^FF0000Unavailable^000000", " ^FF0000Offline^000000";
	setmapflag "guild_vs3", mf_battleground, 2;
	setmapflag "guild_vs3", mf_nosave;
	setmapflag "guild_vs3", mf_nomemo;
	setmapflag "guild_vs3", mf_nowarp;
	setmapflag "guild_vs3", mf_nowarpto;
	setmapflag "guild_vs3", mf_noteleport;
	setmapflag "guild_vs3", mf_nopenalty;
	end;
OnWarStart:
	if (.start) {
		mes "The match is in progress ...";
		mes "The current score is "+ .partyAscore +":"+ .partyBscore;
		mes "Terminate ?";
		next;
		if (select("No", "Yes") == 1) close;
		if (select("Yes", "No") == 2) close;
		.skip = true;
		awake strnpcinfo(0);
		close;
	}
	mes "Welcome, what do you want to do?";
	callsub L_display_party_members, .partyA, "A";
	callsub L_display_party_members, .partyB, "B";
	next;
	switch(select("Set Party Size", "Select Party A", "Select Party B", "Start Match")) {
	case 1:
		mes "input exact party size";
		mes "if 3vs3, input 3";
		next;
		input .partysize, 1, 12;
		goto OnWarStart;
	case 2:
		.partyA = callsub(L_select_party, "A", .partyA, .partyB);
		goto OnWarStart;
	case 3:
		.partyB = callsub(L_select_party, "B", .partyB, .partyA);
		goto OnWarStart;
	case 4:
		.@conditions = 0;
		.@conditions += callsub(L_check_party_conditions, .partyA, "A");
		.@conditions += callsub(L_check_party_conditions, .partyB, "B");
		if (.@conditions < 2 || .start)
			goto OnWarStart;
		else
			goto L_start;
	}
	close;
L_display_party_members:
	if (!getarg(0))
		mes "Party "+ getarg(1) +" = ^FF0000None^000000";
	else {
		getpartymember getarg(0), 0;
		getpartymember getarg(0), 1;
		getpartymember getarg(0), 2;
		.@origin = getcharid(3);
		.@online = .@unavailable = 0;
		for (.@i = 0; .@i < $@partymembercount; ++.@i) {
			if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
				attachrid $@partymemberaid[.@i];
				if (getmapflag(strcharinfo(3), mf_nowarp)) {
					.@type[.@i] = 1;
					++.@online;
					++.@unavailable;
				}
				else {
					.@type[.@i] = 0;
					++.@online;
				}
			}
			else
				.@type[.@i] = 2;
		}
		attachrid .@origin;
		mes "Party "+ getarg(1) +" = ["+ getpartyname(.partyA) +"] "+( ($@partymembercount == .partysize && .@online == .partysize && !.@unavailable)? "^00FF00Ready": "^FF0000Not Qualify" )+"^000000";
		mes "Online = "+ .@online +((.@unavailable)? ", Unavailable = "+ .@unavailable : "");
		for (.@i = 0; .@i < $@partymembercount; ++.@i)
			mes "- "+ $@partymembername$[.@i] + .available_type$[.@type[.@i]];
	}
	return;
L_select_party:
	mes "input a player name";
	input .@tmp$;
	if (getcharid(3, .@tmp$) == 0) {
		mes "player not available";
		next;
		return getarg(1);
	}
	.@partyid = getcharid(1, .@tmp$);
	if (!.@partyid) {
		mes "that player doesn't have a party";
		next;
		return getarg(1);
	}
	if (.@partyid == getarg(2)) {
		mes "that player is a member on the other party";
		next;
		return getarg(1);
	}
	mes "are you sure you want the party";
	mes getpartyname(.@partyid) +" as Party "+ getarg(0) +"?";
	next;
	if (select("Yes","No") == 2)
		return getarg(1);
	return .@partyid;
L_check_party_conditions:
	if (!getarg(0)) {
		mes "Party"+ getarg(1) +" hasn't been configure";
		next;
		return false;
	}
	getpartymember getarg(0), 0;
	getpartymember getarg(0), 1;
	getpartymember getarg(0), 2;
	.@origin = getcharid(3);
	for (.@i = 0; .@i < $@partymembercount; ++.@i) {
		if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
			attachrid $@partymemberaid[.@i];
			++.@online;
			if (getmapflag(strcharinfo(3), mf_nowarp))
				.@index[.@c++] = .@i;
		}
	}
	attachrid .@origin;
	if ($@partymembercount != .partysize) {
		mes "Party"+ getarg(1) +" has changed its party size";
		next;
		return false;
	}
	if (!.@online) {
		mes "Party"+ getarg(1) +" don't have any players online at the moment";
		next;
		return false;
	}
	if (.@online != .partysize) {
		mes "Party"+ getarg(1) +" has a few members gone offline";
		next;
		return false;
	}
	if (.@c > 0) {
		mes "Party"+ getarg(1) +" has "+ .@c +" party members not ready, still attending on other event maps";
		for (.@i = 0; .@i < .@c; ++.@i)
			mes "- "+ $@partymembername$[.@index[.@i]];
		next;
		return false;
	}
	return true;
L_register_bg_party:
	getpartymember getarg(0), 1;
	getpartymember getarg(0), 2;
	for (.@i = 0; .@i < $@partymembercount; ++.@i) {
		if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
			bg_join getarg(4), "guild_vs3", getarg(2), getarg(3), $@partymembercid[.@i];
			set getarg(1), getarg(1) +1;
		}
	}
	return;
L_start:
	.start = true;
	announce "Party Vs Party : ["+ getpartyname(.partyA) +"] VS ["+ getpartyname(.partyB) +"]", bc_all;
	.partyAid = bg_create( "guild_vs3", 13,50, strnpcinfo(0)+"::OnpartyAQuit", strnpcinfo(0)+"::OnpartyADead" );
	.partyBid = bg_create( "guild_vs3", 86,50, strnpcinfo(0)+"::OnpartyBQuit", strnpcinfo(0)+"::OnpartyBDead" );
	callsub L_register_bg_party, .partyA, .partyAscore, 13,50, .partyAid;
	callsub L_register_bg_party, .partyB, .partyBscore, 86,50, .partyBid;
	bg_updatescore "guild_vs3", .partyAscore, .partyBscore;
	setwall "guild_vs3", 19,55, 12, DIR_SOUTH, false, "partyvspartyA";
	setwall "guild_vs3", 80,55, 12, DIR_SOUTH, false, "partyvspartyB";
	sleep 3000;
	for (.@i = 5; .@i > 0; --.@i) {
		mapannounce "guild_vs3", "["+ .@i +"]", bc_map;
		if (!.skip) sleep 1000;
	}
	mapannounce "guild_vs3", "Start!", bc_map;
	delwall "partyvspartyA";
	delwall "partyvspartyB";
	if (!.skip) sleep .eventlasting * 1000;
	if ( .partyAscore > .partyBscore ) {
		mapannounce "guild_vs3", "Party ["+ getpartyname(.partyA) +"] is victorious!", bc_map;
		callsub L_Reward, .partyAid;
	}
	else if ( .partyBscore > .partyAscore ) {
		mapannounce "guild_vs3", "Party ["+ getpartyname(.partyB) +"] is victorious!", bc_map;
		callsub L_Reward, .partyBid;
	}
	else
		mapannounce "guild_vs3", "- The match has ended in a draw! -", bc_map;
	bg_warp .partyAid, "prontera",152,178;
	bg_warp .partyBid, "prontera",154,178;
	bg_destroy .partyAid;
	bg_destroy .partyBid;
	.start = .skip =  false;
	.partyAscore = .partyBscore = 0;
	end;
L_Reward:
	bg_get_data getarg(0), 1;
	for ( .@i = 0; .@i < $@arenamemberscount; ++.@i )
		getitem 512, 1, $@arenamembers[.@i];
	return;
OnpartyADead:  callsub L_Dead, .partyAscore;
OnpartyBDead: callsub L_Dead, .partyBscore;
L_Dead:
	set getarg(0), getarg(0) -1;
	bg_updatescore "guild_vs3", .partyAscore, .partyBscore;
	bg_leave;
	if (!getarg(0)) {
		.skip = true;
		awake strnpcinfo(0);
	}
	end;
OnpartyAQuit:  callsub L_Quit, .partyAscore;
OnpartyBQuit: callsub L_Quit, .partyBscore;
L_Quit:
	set getarg(0), getarg(0) -1;
	bg_updatescore "guild_vs3", .partyAscore, .partyBscore;
	percentheal 100, 100;
	if (!getarg(0)) {
		.skip = true;
		awake strnpcinfo(0);
	}
	end;
}

 

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  236
  • Reputation:   87
  • Joined:  06/30/18
  • Last Seen:  

//===== rAthena Script ============================================
//= Party vs Party
//===== By: =======================================================
//= AnnieRuru
//===== Current Version: ==========================================
//= 0.2
//===== Compatible With: ==========================================
//= rathena 2020-09-23
//===== Description: ==============================================
//= GM has to manually pick which 2 party to fight
//===== Topic =====================================================
//= https://rathena.org/board/topic/125939-looking-for-a-tournament-npc-sytem-pt-vs-pt/
//===== Additional Comments: ======================================
//= came over to rathena forum for a while, glad to see potential members on the other side
//=================================================================

prontera,155,177,5	script	PartyVsParty	100,{
	goto OnWarStart;
	end;

	OnInit:
		.eventlasting = 60; // 60 seconds
		.partysize = 1;

		bindatcmd "startmatch", strnpcinfo(3)+"::OnWarStart", 99,99;
		setarray .available_type$, " ^00FF00Available^000000", " ^FF0000Unavailable^000000", " ^FF0000Offline^000000";
		setmapflag "guild_vs3", mf_battleground, 2;
		setmapflag "guild_vs3", mf_nosave;
		setmapflag "guild_vs3", mf_nomemo;
		setmapflag "guild_vs3", mf_nowarp;
		setmapflag "guild_vs3", mf_nowarpto;
		setmapflag "guild_vs3", mf_noteleport;
		setmapflag "guild_vs3", mf_nopenalty;
		end;
	OnWarStart:
		if (.start) {
			mes "The match is in progress ...";
			mes "The current score is "+ .partyAscore +":"+ .partyBscore;
			mes "Terminate ?";
			next;
			if (select("No", "Yes") == 1) close;
			if (select("Yes", "No") == 2) close;
			.skip = true;
			awake strnpcinfo(0);
			close;
		}
		mes "Welcome, what do you want to do?";
		callsub L_display_party_members, .partyA, "A";
		callsub L_display_party_members, .partyB, "B";
		next;
		switch(select("Set Party Size", "Select Party A", "Select Party B", "Start Match")) {
		case 1:
			mes "input exact party size";
			mes "if 3vs3, input 3";
			next;
			input .partysize, 1, 12;
			goto OnWarStart;
		case 2:
			.partyA = callsub(L_select_party, "A", .partyA, .partyB);
			goto OnWarStart;
		case 3:
			.partyB = callsub(L_select_party, "B", .partyB, .partyA);
			goto OnWarStart;
		case 4:
			.@conditions = 0;
			.@conditions += callsub(L_check_party_conditions, .partyA, "A");
			.@conditions += callsub(L_check_party_conditions, .partyB, "B");
			if (.@conditions < 2 || .start)
				goto OnWarStart;
			else
				goto L_start;
		}
		close;
	L_display_party_members:
		if (!getarg(0))
			mes "Party "+ getarg(1) +" = ^FF0000None^000000";
		else {
			getpartymember getarg(0), 0;
			getpartymember getarg(0), 1;
			getpartymember getarg(0), 2;
			.@origin = getcharid(3);
			.@online = .@unavailable = 0;
			for (.@i = 0; .@i < $@partymembercount; ++.@i) {
				if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
					attachrid $@partymemberaid[.@i];
					if (getmapflag(strcharinfo(3), mf_nowarp)) {
						.@type[.@i] = 1;
						++.@online;
						++.@unavailable;
					}
					else {
						.@type[.@i] = 0;
						++.@online;
					}
				}
				else
					.@type[.@i] = 2;
			}
			attachrid .@origin;
			mes "Party "+ getarg(1) +" = ["+ getpartyname(.partyA) +"] "+( ($@partymembercount == .partysize && .@online == .partysize && !.@unavailable)? "^00FF00Ready": "^FF0000Not Qualify" )+"^000000";
			mes "Online = "+ .@online +((.@unavailable)? ", Unavailable = "+ .@unavailable : "");
			for (.@i = 0; .@i < $@partymembercount; ++.@i)
				mes "- "+ $@partymembername$[.@i] + .available_type$[.@type[.@i]];
		}
		return;
	L_select_party:
		mes "input a player name";
		input .@tmp$;
		if (getcharid(3, .@tmp$) == 0) {
			mes "player not available";
			next;
			return getarg(1);
		}
		.@partyid = getcharid(1, .@tmp$);
		if (!.@partyid) {
			mes "that player doesn't have a party";
			next;
			return getarg(1);
		}
		if (.@partyid == getarg(2)) {
			mes "that player is a member on the other party";
			next;
			return getarg(1);
		}
		mes "are you sure you want the party";
		mes getpartyname(.@partyid) +" as Party "+ getarg(0) +"?";
		next;
		if (select("Yes","No") == 2)
			return getarg(1);
		return .@partyid;
	L_check_party_conditions:
		if (!getarg(0)) {
			mes "Party"+ getarg(1) +" hasn't been configure";
			next;
			return false;
		}
		getpartymember getarg(0), 0;
		getpartymember getarg(0), 1;
		getpartymember getarg(0), 2;
		.@origin = getcharid(3);
		for (.@i = 0; .@i < $@partymembercount; ++.@i) {
			if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
				attachrid $@partymemberaid[.@i];
				++.@online;
				if (getmapflag(strcharinfo(3), mf_nowarp))
					.@index[.@c++] = .@i;
			}
		}
		attachrid .@origin;
		if ($@partymembercount != .partysize) {
			mes "Party"+ getarg(1) +" has changed its party size";
			next;
			return false;
		}
		if (!.@online) {
			mes "Party"+ getarg(1) +" don't have any players online at the moment";
			next;
			return false;
		}
		if (.@online != .partysize) {
			mes "Party"+ getarg(1) +" has a few members gone offline";
			next;
			return false;
		}
		if (.@c > 0) {
			mes "Party"+ getarg(1) +" has "+ .@c +" party members not ready, still attending on other event maps";
			for (.@i = 0; .@i < .@c; ++.@i)
				mes "- "+ $@partymembername$[.@index[.@i]];
			next;
			return false;
		}
		return true;
	L_register_bg_party:
		getpartymember getarg(0), 1;
		getpartymember getarg(0), 2;
		for (.@i = 0; .@i < $@partymembercount; ++.@i) {
			if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
				bg_join getarg(4), "guild_vs3", getarg(2), getarg(3), $@partymembercid[.@i];
				set getarg(1), getarg(1) +1;
			}
		}
		return;
	L_start:
		.start = true;
		announce "Party Vs Party : ["+ getpartyname(.partyA) +"] VS ["+ getpartyname(.partyB) +"]", bc_all;
		.partyAid = bg_create( "guild_vs3", 13,50, strnpcinfo(0)+"::OnpartyAQuit", strnpcinfo(0)+"::OnpartyADead" );
		.partyBid = bg_create( "guild_vs3", 86,50, strnpcinfo(0)+"::OnpartyBQuit", strnpcinfo(0)+"::OnpartyBDead" );
		callsub L_register_bg_party, .partyA, .partyAscore, 13,50, .partyAid;
		callsub L_register_bg_party, .partyB, .partyBscore, 86,50, .partyBid;
		bg_updatescore "guild_vs3", .partyAscore, .partyBscore;
		setwall "guild_vs3", 19,55, 12, DIR_SOUTH, false, "partyvspartyA";
		setwall "guild_vs3", 80,55, 12, DIR_SOUTH, false, "partyvspartyB";
		sleep 3000;
		for (.@i = 5; .@i > 0; --.@i) {
			mapannounce "guild_vs3", "["+ .@i +"]", bc_map;
			if (!.skip) sleep 1000;
		}
		mapannounce "guild_vs3", "Start!", bc_map;
		delwall "partyvspartyA";
		delwall "partyvspartyB";
		if (!.skip) sleep .eventlasting * 1000;
		if ( .partyAscore > .partyBscore ) {
			mapannounce "guild_vs3", "Party ["+ getpartyname(.partyA) +"] is victorious!", bc_map;
			callsub L_Reward, .partyAid;
		}
		else if ( .partyBscore > .partyAscore ) {
			mapannounce "guild_vs3", "Party ["+ getpartyname(.partyB) +"] is victorious!", bc_map;
			callsub L_Reward, .partyBid;
		}
		else
			mapannounce "guild_vs3", "- The match has ended in a draw! -", bc_map;
		bg_warp .partyAid, "prontera",152,178;
		bg_warp .partyBid, "prontera",154,178;
		bg_destroy .partyAid;
		bg_destroy .partyBid;
		.start = .skip =  false;
		.partyAscore = .partyBscore = 0;
		end;
	L_Reward:
		bg_get_data getarg(0), 1;
		for ( .@i = 0; .@i < $@arenamemberscount; ++.@i )
			getitem 512, 1, $@arenamembers[.@i];
		return;
	OnpartyADead:  callsub L_Dead, .partyAscore;
	OnpartyBDead: callsub L_Dead, .partyBscore;
	L_Dead:
		set getarg(0), getarg(0) -1;
		bg_updatescore "guild_vs3", .partyAscore, .partyBscore;
		bg_leave;
		if (!getarg(0)) {
			.skip = true;
			awake strnpcinfo(0);
		}
		end;
	OnpartyAQuit:  callsub L_Quit, .partyAscore;
	OnpartyBQuit: callsub L_Quit, .partyBscore;
	L_Quit:
		set getarg(0), getarg(0) -1;
		bg_updatescore "guild_vs3", .partyAscore, .partyBscore;
		percentheal 100, 100;
		if (!getarg(0)) {
			.skip = true;
			awake strnpcinfo(0);
		}
		end;
}

 

  • Love 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  48
  • Topics Per Day:  0.01
  • Content Count:  111
  • Reputation:   9
  • Joined:  11/20/13
  • Last Seen:  

5 hours ago, Winterfox said:
//===== rAthena Script ============================================
//= Party vs Party
//===== By: =======================================================
//= AnnieRuru
//===== Current Version: ==========================================
//= 0.2
//===== Compatible With: ==========================================
//= rathena 2020-09-23
//===== Description: ==============================================
//= GM has to manually pick which 2 party to fight
//===== Topic =====================================================
//= https://rathena.org/board/topic/125939-looking-for-a-tournament-npc-sytem-pt-vs-pt/
//===== Additional Comments: ======================================
//= came over to rathena forum for a while, glad to see potential members on the other side
//=================================================================

prontera,155,177,5	script	PartyVsParty	100,{
	goto OnWarStart;
	end;

	OnInit:
		.eventlasting = 60; // 60 seconds
		.partysize = 1;

		bindatcmd "startmatch", strnpcinfo(3)+"::OnWarStart", 99,99;
		setarray .available_type$, " ^00FF00Available^000000", " ^FF0000Unavailable^000000", " ^FF0000Offline^000000";
		setmapflag "guild_vs3", mf_battleground, 2;
		setmapflag "guild_vs3", mf_nosave;
		setmapflag "guild_vs3", mf_nomemo;
		setmapflag "guild_vs3", mf_nowarp;
		setmapflag "guild_vs3", mf_nowarpto;
		setmapflag "guild_vs3", mf_noteleport;
		setmapflag "guild_vs3", mf_nopenalty;
		end;
	OnWarStart:
		if (.start) {
			mes "The match is in progress ...";
			mes "The current score is "+ .partyAscore +":"+ .partyBscore;
			mes "Terminate ?";
			next;
			if (select("No", "Yes") == 1) close;
			if (select("Yes", "No") == 2) close;
			.skip = true;
			awake strnpcinfo(0);
			close;
		}
		mes "Welcome, what do you want to do?";
		callsub L_display_party_members, .partyA, "A";
		callsub L_display_party_members, .partyB, "B";
		next;
		switch(select("Set Party Size", "Select Party A", "Select Party B", "Start Match")) {
		case 1:
			mes "input exact party size";
			mes "if 3vs3, input 3";
			next;
			input .partysize, 1, 12;
			goto OnWarStart;
		case 2:
			.partyA = callsub(L_select_party, "A", .partyA, .partyB);
			goto OnWarStart;
		case 3:
			.partyB = callsub(L_select_party, "B", .partyB, .partyA);
			goto OnWarStart;
		case 4:
			.@conditions = 0;
			.@conditions += callsub(L_check_party_conditions, .partyA, "A");
			.@conditions += callsub(L_check_party_conditions, .partyB, "B");
			if (.@conditions < 2 || .start)
				goto OnWarStart;
			else
				goto L_start;
		}
		close;
	L_display_party_members:
		if (!getarg(0))
			mes "Party "+ getarg(1) +" = ^FF0000None^000000";
		else {
			getpartymember getarg(0), 0;
			getpartymember getarg(0), 1;
			getpartymember getarg(0), 2;
			.@origin = getcharid(3);
			.@online = .@unavailable = 0;
			for (.@i = 0; .@i < $@partymembercount; ++.@i) {
				if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
					attachrid $@partymemberaid[.@i];
					if (getmapflag(strcharinfo(3), mf_nowarp)) {
						.@type[.@i] = 1;
						++.@online;
						++.@unavailable;
					}
					else {
						.@type[.@i] = 0;
						++.@online;
					}
				}
				else
					.@type[.@i] = 2;
			}
			attachrid .@origin;
			mes "Party "+ getarg(1) +" = ["+ getpartyname(.partyA) +"] "+( ($@partymembercount == .partysize && .@online == .partysize && !.@unavailable)? "^00FF00Ready": "^FF0000Not Qualify" )+"^000000";
			mes "Online = "+ .@online +((.@unavailable)? ", Unavailable = "+ .@unavailable : "");
			for (.@i = 0; .@i < $@partymembercount; ++.@i)
				mes "- "+ $@partymembername$[.@i] + .available_type$[.@type[.@i]];
		}
		return;
	L_select_party:
		mes "input a player name";
		input .@tmp$;
		if (getcharid(3, .@tmp$) == 0) {
			mes "player not available";
			next;
			return getarg(1);
		}
		.@partyid = getcharid(1, .@tmp$);
		if (!.@partyid) {
			mes "that player doesn't have a party";
			next;
			return getarg(1);
		}
		if (.@partyid == getarg(2)) {
			mes "that player is a member on the other party";
			next;
			return getarg(1);
		}
		mes "are you sure you want the party";
		mes getpartyname(.@partyid) +" as Party "+ getarg(0) +"?";
		next;
		if (select("Yes","No") == 2)
			return getarg(1);
		return .@partyid;
	L_check_party_conditions:
		if (!getarg(0)) {
			mes "Party"+ getarg(1) +" hasn't been configure";
			next;
			return false;
		}
		getpartymember getarg(0), 0;
		getpartymember getarg(0), 1;
		getpartymember getarg(0), 2;
		.@origin = getcharid(3);
		for (.@i = 0; .@i < $@partymembercount; ++.@i) {
			if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
				attachrid $@partymemberaid[.@i];
				++.@online;
				if (getmapflag(strcharinfo(3), mf_nowarp))
					.@index[.@c++] = .@i;
			}
		}
		attachrid .@origin;
		if ($@partymembercount != .partysize) {
			mes "Party"+ getarg(1) +" has changed its party size";
			next;
			return false;
		}
		if (!.@online) {
			mes "Party"+ getarg(1) +" don't have any players online at the moment";
			next;
			return false;
		}
		if (.@online != .partysize) {
			mes "Party"+ getarg(1) +" has a few members gone offline";
			next;
			return false;
		}
		if (.@c > 0) {
			mes "Party"+ getarg(1) +" has "+ .@c +" party members not ready, still attending on other event maps";
			for (.@i = 0; .@i < .@c; ++.@i)
				mes "- "+ $@partymembername$[.@index[.@i]];
			next;
			return false;
		}
		return true;
	L_register_bg_party:
		getpartymember getarg(0), 1;
		getpartymember getarg(0), 2;
		for (.@i = 0; .@i < $@partymembercount; ++.@i) {
			if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
				bg_join getarg(4), "guild_vs3", getarg(2), getarg(3), $@partymembercid[.@i];
				set getarg(1), getarg(1) +1;
			}
		}
		return;
	L_start:
		.start = true;
		announce "Party Vs Party : ["+ getpartyname(.partyA) +"] VS ["+ getpartyname(.partyB) +"]", bc_all;
		.partyAid = bg_create( "guild_vs3", 13,50, strnpcinfo(0)+"::OnpartyAQuit", strnpcinfo(0)+"::OnpartyADead" );
		.partyBid = bg_create( "guild_vs3", 86,50, strnpcinfo(0)+"::OnpartyBQuit", strnpcinfo(0)+"::OnpartyBDead" );
		callsub L_register_bg_party, .partyA, .partyAscore, 13,50, .partyAid;
		callsub L_register_bg_party, .partyB, .partyBscore, 86,50, .partyBid;
		bg_updatescore "guild_vs3", .partyAscore, .partyBscore;
		setwall "guild_vs3", 19,55, 12, DIR_SOUTH, false, "partyvspartyA";
		setwall "guild_vs3", 80,55, 12, DIR_SOUTH, false, "partyvspartyB";
		sleep 3000;
		for (.@i = 5; .@i > 0; --.@i) {
			mapannounce "guild_vs3", "["+ .@i +"]", bc_map;
			if (!.skip) sleep 1000;
		}
		mapannounce "guild_vs3", "Start!", bc_map;
		delwall "partyvspartyA";
		delwall "partyvspartyB";
		if (!.skip) sleep .eventlasting * 1000;
		if ( .partyAscore > .partyBscore ) {
			mapannounce "guild_vs3", "Party ["+ getpartyname(.partyA) +"] is victorious!", bc_map;
			callsub L_Reward, .partyAid;
		}
		else if ( .partyBscore > .partyAscore ) {
			mapannounce "guild_vs3", "Party ["+ getpartyname(.partyB) +"] is victorious!", bc_map;
			callsub L_Reward, .partyBid;
		}
		else
			mapannounce "guild_vs3", "- The match has ended in a draw! -", bc_map;
		bg_warp .partyAid, "prontera",152,178;
		bg_warp .partyBid, "prontera",154,178;
		bg_destroy .partyAid;
		bg_destroy .partyBid;
		.start = .skip =  false;
		.partyAscore = .partyBscore = 0;
		end;
	L_Reward:
		bg_get_data getarg(0), 1;
		for ( .@i = 0; .@i < $@arenamemberscount; ++.@i )
			getitem 512, 1, $@arenamembers[.@i];
		return;
	OnpartyADead:  callsub L_Dead, .partyAscore;
	OnpartyBDead: callsub L_Dead, .partyBscore;
	L_Dead:
		set getarg(0), getarg(0) -1;
		bg_updatescore "guild_vs3", .partyAscore, .partyBscore;
		bg_leave;
		if (!getarg(0)) {
			.skip = true;
			awake strnpcinfo(0);
		}
		end;
	OnpartyAQuit:  callsub L_Quit, .partyAscore;
	OnpartyBQuit: callsub L_Quit, .partyBscore;
	L_Quit:
		set getarg(0), getarg(0) -1;
		bg_updatescore "guild_vs3", .partyAscore, .partyBscore;
		percentheal 100, 100;
		if (!getarg(0)) {
			.skip = true;
			awake strnpcinfo(0);
		}
		end;
}

 

Thank you very much friend. worked perfectly...
Grateful!!!

Link to comment
Share on other sites

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.   Paste as plain text instead

  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.

×
×
  • Create New...