Jump to content
  • 0

custom/battlegroun/bg_emp HELP


Yami

Question


  • Group:  Members
  • Topic Count:  35
  • Topics Per Day:  0.01
  • Content Count:  111
  • Reputation:   2
  • Joined:  01/02/14
  • Last Seen:  

Hi there, I need help making this script not autoresurecting dead players.

I plan on making this BG more like WOE, but when you die. You just stay dead, do not ressurect or anything. I will block resu skill on the map.

I just dont know what to change to make this script not ressurecting dead players. Thanks in advance.

//===== rAthena Script =======================================
//= Battleground: Emperium
//===== By: ==================================================
//= AnnieRuru
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= A simple battleground script:
//= Destroy the opponent's Emperium to win the match.
//===== Additional Comments: =================================
//= 1.0 First version, edited. [Euphy]
//============================================================
// Battle Ground HQ
-	script	Maroll Battle Recruiter::BatRecruit	728,{
	mes " [Maroll Battle Recruiter]";
	mes " Good day, adventurer.";
	mes " I'm a knight from a far country called Maroll Kingdom.";
	next;
	mes " [Maroll Battle Recruiter]";
	mes " The two princes of the kingdom are now battling for the throne of Maroll, and are in need of experienced soldiers like you.";
	mes " How would you like to lend your power to one of the princes in the Maroll Kingdom?";
	next;
	switch(select("Join:Don't Join")) {
	case 1:
		mes "[Maroll Battle Recruiter]";
		mes "May the war god bless you.";
		close2;
		getmapxy(.@mapname$,.@x,.@y,1);
		if (.@mapname$ == "prontera")
			set bat_return,1;
		else if (.@mapname$ == "moc_ruins")
			set bat_return,2;
		else if (.@mapname$ == "aldebaran")
			set bat_return,3;
		else if (.@mapname$ == "geffen")
			set bat_return,4;
		else if (.@mapname$ == "payon")
			set bat_return,5;
		else if (.@mapname$ == "lighthalzen")
			set bat_return,6;
		else if (.@mapname$ == "rachel")
			set bat_return,7;
		else
			set bat_return,1;
		warp "bat_room",154,150;
		break;
	case 2:
		mes " [Maroll Battle Recruiter]";
		mes " I'll always be stationed here for more soldiers. Feel free to come back whenever you're interested.";
		close;
	}
	end;
}

prontera,164,184,3	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit1	728
moc_ruins,75,162,3	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit2	728
aldebaran,146,109,3	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit3	728
geffen,109,66,3	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit4	728
payon,189,105,3	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit5	728
lighthalzen,153,86,5	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit6	728
rachel,149,138,3	duplicate(BatRecruit)	Maroll Battle Recruiter::BatRecruit7	728

// Script Start
-	script	bg_emp#control	-1,{
OnInit:
	.minplayer2start = 5;      // minimum players to start (ex. if 3vs3, set to 3)
	.eventlasting    = 5*60;  // event duration before auto-reset (20 minutes * seconds)
	setarray .rewarditem[0],   // rewards for the winning team: <item>,<amount>,...
		7773,5;
	.team1name$ = "Red";
	.team2name$ = "Blue";
	end;
OnStart:
	if ( getwaitingroomstate( 0, .rednpcname$ ) < .minplayer2start || getwaitingroomstate( 0, .bluenpcname$ ) < .minplayer2start )
		end;

	// create Battleground and teams
	.red = waitingroom2bg( "bat_a01", 176,345, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ );
	copyarray .team1aid, $@arenamembers, $@arenamembersnum;
	.team1count = .minplayer2start;
	.blue = waitingroom2bg( "bat_a01", 167,50, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ );
	copyarray .team2aid, $@arenamembers, $@arenamembersnum;
	.team2count = .minplayer2start;
	delwaitingroom .rednpcname$;
	delwaitingroom .bluenpcname$;
	disablenpc .rednpcname$;
	disablenpc .bluenpcname$;
	setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red";
	setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue";
	bg_warp .red, "bat_a01", 171,346;
	bg_warp .blue, "bat_a01", 162,50;
	bg_updatescore "bat_a01", 0, 0;

	// delay before match begins
	sleep 6000;
	mapannounce "bat_a01", "The rules are simple. The first team to break the opponent's Emperium wins!", bc_map;
	sleep 3000;
	for ( .@i = 5; .@i > 0; .@i-- ) {
		mapannounce "bat_a01", "["+ .@i +"]", bc_map;
		sleep 1000;
	}
	mapannounce "bat_a01", "Start!", bc_map;

	// spawn Emperiums
	bg_monster .red,"bat_a01",171,346, "--ja--",1915, strnpcinfo(3)+"::OnRedDown";
	bg_monster .blue,"bat_a01",162,50, "--ja--",1914, strnpcinfo(3)+"::OnBlueDown";
	delwall "bg_emp_town_red";
	delwall "bg_emp_town_blue";

	// match duration
	sleep .eventlasting * 1000;

	// end match, destroy Battleground, reset NPCs
	killmonster "bat_a01", strnpcinfo(3)+"::OnRedDown";
	killmonster "bat_a01", strnpcinfo(3)+"::OnBlueDown";
	if ( .winside ) {
		mapannounce "bat_a01", "- "+ getd( ".team"+ .winside +"name$" ) +" Team is victorious! -", bc_map;
		for ( .@i = 0; .@i < getd(".team"+ .winside +"count"); .@i++ )
			getitem .rewarditem[0], .rewarditem[1], getd(".team"+ .winside +"aid["+ .@i +"]" );
	} else
		mapannounce "bat_a01", "- The match has ended in a draw! -", bc_map;
	sleep 5000;
	bg_warp .red, "bat_room",154,150;
	bg_warp .blue, "bat_room",154,150;
	bg_destroy .red;
	bg_destroy .blue;
	delwall "bg_emp_town_red";
	delwall "bg_emp_town_blue";
	deletearray .team1aid;
	deletearray .team2aid;
	.winside = .team1count = .team2count = 0;
	enablenpc .rednpcname$;
	enablenpc .bluenpcname$;
	donpcevent .rednpcname$ +"::OnStart";
	donpcevent .bluenpcname$ +"::OnStart";
	end;

// Emperium destroyed
OnRedDown:  callsub L_EmpDown, 1, 2;
OnBlueDown: callsub L_EmpDown, 2, 1;
L_EmpDown:
	mapannounce "bat_a01", strcharinfo(0) +" has destroyed "+ getd( ".team"+ getarg(0) +"name$" ) +" Team's Emperium.", bc_map;
	.winside = getarg(1);
	awake strnpcinfo(0);
	end;

// "OnDeath" event
OnRedDead:
OnBlueDead:
	sleep2 1250;
	percentheal 100,100;
	specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,240000,10;
	specialeffect2 EF_BLESSING; sc_start SC_BLESSING,240000,10;
	end;

// "OnQuit" event
OnRedQuit:  callsub L_Quit, 1, 2;
OnBlueQuit: callsub L_Quit, 2, 1;
L_Quit:
	percentheal 100, 100;
	while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++;
	deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1;
	setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1;
	if ( getd(".team"+ getarg(0) +"count") ) end;
	mapannounce "bat_a01", "All "+ getd( ".team"+ getarg(0) +"name$" ) +" team members have quit!", bc_map, 0xff3333;
	end;
}

bat_room,161,155,3	script	Red Team#bg_emp	416,{
	end;
OnInit:
	sleep 1;
	set getvariableofnpc( .rednpcname$, "bg_emp#control" ), strnpcinfo(0);
OnStart:
	waitingroom "Red Team", getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" );
	end;
}

bat_room,161,145,3	script	Blue Team#bg_emp	420,{
	end;
OnInit:
	sleep 1;
	set getvariableofnpc( .bluenpcname$, "bg_emp#control" ), strnpcinfo(0);
OnStart:
	waitingroom "Blue Team", getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" );
	end;
}

bat_a01	mapflag	battleground
bat_a01	mapflag	nosave	SavePoint
bat_a01	mapflag	nowarp
bat_a01	mapflag	nowarpto
bat_a01	mapflag	noteleport
bat_a01	mapflag	nomemo
bat_a01	mapflag	nopenalty
bat_a01	mapflag	nobranch
bat_a01	mapflag	noicewall

Link to comment
Share on other sites

2 answers to this question

Recommended Posts


  • Group:  Developer
  • Topic Count:  48
  • Topics Per Day:  0.01
  • Content Count:  1443
  • Reputation:   337
  • Joined:  10/17/12
  • Last Seen:  

change

// "OnDeath" event
OnRedDead:
OnBlueDead:
	sleep2 1250;
	percentheal 100,100;
	specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,240000,10;
	specialeffect2 EF_BLESSING; sc_start SC_BLESSING,240000,10;
	end;

to

// "OnDeath" event
OnRedDead:
OnBlueDead:
	sleep2 1250;
	percentheal 100,100;
	warp "SavePoint",0,0;
	end;

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  35
  • Topics Per Day:  0.01
  • Content Count:  111
  • Reputation:   2
  • Joined:  01/02/14
  • Last Seen:  

@staolao is warping to save point dead players won't stop the BG? i think it has a script for players who quit the map

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...