Custom Battle Ground by goddammit (not properly working)

karazu

New member
Messages
1,115
Points
0
This is a Rathena Script "2012"

No error in MAP DB

Related Topics
http://rathena.org/board/topic/88644-what-is-the-error-all-about/            (solve no error on map DB)
http://rathena.org/board/topic/88636-onclock-command/#entry227658     (solve no error on map DB)

Theirs a problem probably because this is a rAthena script year ago. 
NOTE: I am using Hercules.

This is the Script

//Author-Script Goddameit My forum : http://bit.ly/MDuQ9F //Author-Map TrojanWorm//Version 2012-10-31//Don't re-release in anywhere and anyway//////////////////////////////////////////////////////////////////////////endless_war mapflag battleground 2endless_war,218,86,0 script #BattleGroundwarpA2 100,{ end;OnInit: waitingroom "Join Team A(Click)",2,"#BattleGroundwarpA2::OnJoin",1; end;OnJoin: if(!$@bg_id_a) set $@bg_id_a,waitingroom2bg("endless_war",205,85,"",""); else waitingroom2bg_single($@bg_id_a,"endless_war",205,85,"#BattleGroundwarpA2"); warpwaitingpc "endless_war",205,85; end;}endless_war,40,86,0 script #BattleGroundwarpB2 100,{ end;OnInit: waitingroom "Join Team B(Click)",2,"#BattleGroundwarpB2::OnJoin",1; end;OnJoin: if(!$@bg_id_ set $@bg_id_b,waitingroom2bg("endless_war",53,85,"",""); else waitingroom2bg_single($@bg_id_b,"endless_war",53,85,"#BattleGroundwarpB2"); warpwaitingpc "endless_war",53,85; end;}endless_war,165,86,0 script #BattleGroundwarpA1 45,2,2,{ warp "endless_war",161,86; end;}endless_war,90,86,0 script #BattleGroundwarpB1 45,2,2,{ warp "endless_war",94,86; end;}prontera,150,180,4 script Battle Ground 100,{ if(.status==2) { mes "Game is running."; close; } if(.status==1) { if(.playernm>=128) { mes "Sorry, full"; close; } select("Join"); if(!.playerid[1]) { //callsub OnEndd; initnpctimer; } set .playernm,.playernm+1; set .playerid[.playernm],getcharid(0); mes "Complete"; close; } end;OnMinute00:OnMinute15:OnMinute30:OnMinute45: callsub OnActive; end;OnActive: callsub OnEndd; set .status,1; Announce "[Battle Ground]:Someone active the game! Go to prontera,150,180 and join us!",0; end;OnTimer60000:if(.point[1]>.point[2]){Announce "[Battle Ground]:Team A Win!",0;getitem $@bg_id_a,605,1;}else if(.point[2]>.point[1]){Announce "[Battle Ground]:Team B Win!",0;getitem $@bg_id_b,605,1;}else{Announce "[Battle Ground]:Draw!",0;getitem $@bg_id_a,605,1;getitem $@bg_id_b,605,1;} callsub OnEnab2; end;OnTimer90000: set .status,2; Announce "[Battle Ground]:Go!",0; bg_monster $@bg_id_a,"endless_war",128,120,"A",1907,"Battle Ground::OnAdestory"; bg_monster $@bg_id_b,"endless_war",127,46,"B",1907,"Battle Ground::OnBdestory"; callsub OnEnab1; end;OnTimer190000: if(.point[1]>.point[2]) { Announce "[Battle Ground]:Team A Win!",0; getitem $@bg_id_a,605,1; }else if(.point[2]>.point[1]) { Announce "[Battle Ground]:Team B Win!",0; getitem $@bg_id_b,605,1; }else { Announce "[Battle Ground]:Draw!",0; getitem $@bg_id_a,605,1; getitem $@bg_id_b,605,1; } sleep2 3000; callsub OnEndd; end;OnBdestory: set .point[1],.point[1]+5; set .point[2],.point[2]-3; bg_updatescore "endless_war",.point[1],.point[2]; detachrid; sleep2 10000; bg_monster $@bg_id_b,"endless_war",127,46,"B",1907,"Battle Ground::OnBdestory"; end;OnAdestory: set .point[2],.point[2]+5; set .point[1],.point[1]-3; bg_updatescore "endless_war",.point[1],.point[2]; detachrid; sleep2 10000; bg_monster $@bg_id_a,"endless_war",128,120,"A",1907,"Battle Ground::OnAdestory"; end;OnEndd: set .status,0; bg_destroy $@bg_id_a; bg_destroy $@bg_id_b; set $@bg_id_a,0; set $@bg_id_b,0; setarray .point[1],0,0; killmonsterall "endless_war"; bg_updatescore "endless_war",.point[1],.point[2]; deletearray .playerid[0],128; mapwarp "endless_war","prontera",150,180; callsub OnDisa; return;OnEnab1: enablenpc "#BattleGroundwarpA1"; enablenpc "#BattleGroundwarpB1"; return;OnEnab2: enablenpc "#BattleGroundwarpA2"; enablenpc "#BattleGroundwarpB2"; return;OnDisa: disablenpc "#BattleGroundwarpA1"; disablenpc "#BattleGroundwarpB1"; disablenpc "#BattleGroundwarpA2"; disablenpc "#BattleGroundwarpB2"; return;OnInit: sleep2 10000; setwall "endless_war",218,87,1,1,0,"BattleGroundwarpA21"; setwall "endless_war",219,87,1,1,0,"BattleGroundwarpA22"; setwall "endless_war",219,86,1,1,0,"BattleGroundwarpA23"; setwall "endless_war",219,85,1,1,0,"BattleGroundwarpA24"; setwall "endless_war",218,85,1,1,0,"BattleGroundwarpA25"; setwall "endless_war",217,85,1,1,0,"BattleGroundwarpA26"; setwall "endless_war",217,86,1,1,0,"BattleGroundwarpA27"; setwall "endless_war",217,87,1,1,0,"BattleGroundwarpA28"; setwall "endless_war",40,87,1,1,0,"BattleGroundwarpB21"; setwall "endless_war",41,87,1,1,0,"BattleGroundwarpB22"; setwall "endless_war",41,86,1,1,0,"BattleGroundwarpB23"; setwall "endless_war",41,85,1,1,0,"BattleGroundwarpB24"; setwall "endless_war",40,85,1,1,0,"BattleGroundwarpB25"; setwall "endless_war",39,85,1,1,0,"BattleGroundwarpB26"; setwall "endless_war",39,86,1,1,0,"BattleGroundwarpB27"; setwall "endless_war",39,87,1,1,0,"BattleGroundwarpB28"; callsub OnEndd; end;OnPCKillEvent: if(strcharinfo(3)=="endless_war" && $@bg_id_a && $@bg_id_ { if(getcharid(4) == $@bg_id_a) { set .point[1],.point[1]+1; }else set .point[2],.point[2]+1; bg_updatescore "endless_war",.point[1],.point[2]; } end;} 
This is the problem

You can click it.
Choose Join but after that It will  re direct you to Complete.
And it will continue to announce the statuses
BG.JPG

 
You Edited it Wrong.

btw you want it every 15 minutes(as what I see from script)

Here's the Fixed Script. Just edit the item id and quantity on Line 124 and 125.

Code:
//Author-Script		Goddameit	My forum : [URL="http://bit.ly/MDuQ9F"]http://bit.ly/MDuQ9F[/URL]	//Author-Map		TrojanWorm//Version		2012-10-31//Don't re-release in anywhere and anyway//////////////////////////////////////////////////////////////////////////endless_war	mapflag	battleground	2endless_war,218,86,0	script	#BattleGroundwarpA2	100,{	end;OnInit:	waitingroom "Join Team A(Click)",2,"#BattleGroundwarpA2::OnJoin",1;	end;OnJoin:	if(!$@bg_id_a)		set $@bg_id_a,waitingroom2bg("endless_war",205,85,"","");	else		waitingroom2bg_single($@bg_id_a,"endless_war",205,85,"#BattleGroundwarpA2");	warpwaitingpc "endless_war",205,85;	end;}endless_war,40,86,0	script	#BattleGroundwarpB2	100,{	end;OnInit:	waitingroom "Join Team B(Click)",2,"#BattleGroundwarpB2::OnJoin",1;	end;OnJoin:	if(!$@bg_id_		set $@bg_id_b,waitingroom2bg("endless_war",53,85,"","");	else	waitingroom2bg_single($@bg_id_b,"endless_war",53,85,"#BattleGroundwarpB2");	warpwaitingpc "endless_war",53,85;	end;}endless_war,165,86,0	script	#BattleGroundwarpA1	45,2,2,{	warp "endless_war",161,86;	end;}endless_war,90,86,0	script	#BattleGroundwarpB1	45,2,2,{	warp "endless_war",94,86;	end;}prontera,150,180,4	script	Battle Ground	100,{	if(.status==2)	{		mes "Game is running.";		close;	}	if(.status==1)	{				if(.playernm>=128)		{			mes "Sorry, full";			close;		}		select("Join");		if(!.playerid[1])		{			//callsub OnEndd;			initnpctimer;		}		set .playernm,.playernm+1;		set .playerid[.playernm],getcharid(0);		mes "Complete";		close;	}	end;OnMinute00:OnMinute15:OnMinute30:OnMinute45:	callsub OnActive;	end;OnActive:	callsub OnEndd;	set .status,1;	Announce "[Battle Ground]:Someone active the game! Go to prontera,150,180 and join us!",0;	end;OnTimer60000:	if(.playernm<=32)	{		Announce "[Battle Ground]:Sorry, player amount isn't enough",0;		callsub OnEndd;		end;	}	Announce "[Battle Ground]:Event is ready!",0;	for(set .@i,1;.@i<=.playernm;set .@i,.@i+1)	{		if(.@i%2==0)			warpchar "endless_war",218,86,.playerid[.@i];		else			warpchar "endless_war",40,86,.playerid[.@i];	}	callsub OnEnab2;	end;OnTimer90000:	set .status,2;	Announce "[Battle Ground]:Go!",0;	bg_monster $@bg_id_a,"endless_war",128,120,"A",1907,"Battle Ground::OnAdestory";	bg_monster $@bg_id_b,"endless_war",127,46,"B",1907,"Battle Ground::OnBdestory";	callsub OnEnab1;	end;OnTimer190000:	if(.point[1]>.point[2]){		set .bg_id_w,$@bg_id_a;		Announce "[Battle Ground]:Team A Win!",0;	}else if(.point[2]>.point[1]){		set .bg_id_w,$@bg_id_b;		Announce "[Battle Ground]:Team B Win!",0;	}else{		set .bg_id_w,-1;		Announce "[Battle Ground]:Draw!",0;	}	for( set .@i,1; .playerid[.@i]; set .@i,.@i+1 ){		if( attachrid(.playerid[.@i]) ){	//Prize if Team A win			if(.bg_id_w == -1){ getitem <ItemID HERE>,<Item Quantity Here>;} //If Match Draws			else if( getcharid(4) == .bg_id_w ) {getitem <ItemID HERE>,<Item Quantity Here>;} //If Someone Wins		}	}	sleep2 3000;	callsub OnEndd;		end;OnBdestory:	set .point[1],.point[1]+5;	set .point[2],.point[2]-3;	bg_updatescore "endless_war",.point[1],.point[2];	detachrid;	sleep2 10000;	bg_monster $@bg_id_b,"endless_war",127,46,"B",1907,"Battle Ground::OnBdestory";	end;OnAdestory:	set .point[2],.point[2]+5;	set .point[1],.point[1]-3;	bg_updatescore "endless_war",.point[1],.point[2];	detachrid;	sleep2 10000;	bg_monster $@bg_id_a,"endless_war",128,120,"A",1907,"Battle Ground::OnAdestory";	end;OnEndd:	set .status,0;	bg_destroy $@bg_id_a;	bg_destroy $@bg_id_b;	set $@bg_id_a,0;	set $@bg_id_b,0;	setarray .point[1],0,0;	killmonsterall "endless_war";	bg_updatescore "endless_war",.point[1],.point[2];	deletearray .playerid[0],128;	mapwarp "endless_war","prontera",150,180;	callsub OnDisa;	return;OnEnab1:	enablenpc "#BattleGroundwarpA1";	enablenpc "#BattleGroundwarpB1";	return;OnEnab2:	enablenpc "#BattleGroundwarpA2";	enablenpc "#BattleGroundwarpB2";	return;OnDisa:	disablenpc "#BattleGroundwarpA1";	disablenpc "#BattleGroundwarpB1";	disablenpc "#BattleGroundwarpA2";	disablenpc "#BattleGroundwarpB2";	return;OnInit:	sleep2 10000;	setwall "endless_war",218,87,1,1,0,"BattleGroundwarpA21";	setwall "endless_war",219,87,1,1,0,"BattleGroundwarpA22";	setwall "endless_war",219,86,1,1,0,"BattleGroundwarpA23";	setwall "endless_war",219,85,1,1,0,"BattleGroundwarpA24";	setwall "endless_war",218,85,1,1,0,"BattleGroundwarpA25";	setwall "endless_war",217,85,1,1,0,"BattleGroundwarpA26";	setwall "endless_war",217,86,1,1,0,"BattleGroundwarpA27";	setwall "endless_war",217,87,1,1,0,"BattleGroundwarpA28";	setwall "endless_war",40,87,1,1,0,"BattleGroundwarpB21";	setwall "endless_war",41,87,1,1,0,"BattleGroundwarpB22";	setwall "endless_war",41,86,1,1,0,"BattleGroundwarpB23";	setwall "endless_war",41,85,1,1,0,"BattleGroundwarpB24";	setwall "endless_war",40,85,1,1,0,"BattleGroundwarpB25";	setwall "endless_war",39,85,1,1,0,"BattleGroundwarpB26";	setwall "endless_war",39,86,1,1,0,"BattleGroundwarpB27";	setwall "endless_war",39,87,1,1,0,"BattleGroundwarpB28";	callsub OnEndd;	end;OnPCKillEvent:	if(strcharinfo(3)=="endless_war" && $@bg_id_a && $@bg_id_	{		if(getcharid(4) == $@bg_id_a)		{			set .point[1],.point[1]+1;		}else			set .point[2],.point[2]+1;		bg_updatescore "endless_war",.point[1],.point[2];	}	end;}
 
Last edited by a moderator:
Same thing Mr. Dastgir Pojee


Everytime i click the NPC>Join>I will just say complete.


And statuses will still be announce like

Not Enough Player.
Go!!!! (event though the NPC already announce that not enough player) 
Draw!!

 
Last edited by a moderator:
Same thing Mr. Dastgir Pojee

Everytime i click the NPC>Join>I will just say complete.

And statuses will still be announce like

Not Enough Player.

Go!!!! (event though the NPC already announce that not enough player) 

Draw!!
Edit Line 82,

Because the script bydefault runs if there are more than 32 player registered.

 
Ohh wow,

that was supposed to be the 2nd question to ask.

ok i will edit now.

update you later.

 
I tried to reduce it to 2 players and still not working.
 

OnTimer60000: if(.playernm<=2) { Announce "[Battle Ground]:Sorry, player amount isn't enough",0; callsub OnEndd; end; } 



and also what is is all about?
maybe this something to do?
 

Code:
	if(.status==1)	{				if(.playernm>=128)		{			mes "Sorry, full";			close;		} 
 
OnTimer60000: if(.playernm<=2) { Announce "[Battle Ground]:Sorry, player amount isn't enough",0; callsub OnEndd; end; } 
is atleast 2 right?

1 vs 1? is it correct?

 
Yes it worked.
 

  if(.playernm<=1) 
I set to 1 and its 1 vs 1 on game.


Thank your for your help.

I will test now the Prize heheh


TESTING

 

 
Same thing Mr. Dastgir Pojee

Everytime i click the NPC>Join>I will just say complete.

And statuses will still be announce like

Not Enough Player.

Go!!!! (event though the NPC already announce that not enough player) 

Draw!!
Edit Line 82,

Because the script bydefault runs if there are more than 32 player registered.
Hello, Its great that the game works now, but the prize script doesnt work.

Draw or win it will not give you item.

Code:
OnTimer190000:	if(.point[1]>.point[2]){		set .bg_id_w,$@bg_id_a;		Announce "[Battle Ground]:Team A Win!",0;	}else if(.point[2]>.point[1]){		set .bg_id_w,$@bg_id_b;		Announce "[Battle Ground]:Team B Win!",0;	}else{		set .bg_id_w,-1;		Announce "[Battle Ground]:Draw!",0;	}	for( set .@i,1; .playerid[.@i]; set .@i,.@i+1 ){		if( attachrid(.playerid[.@i]) ){	//Prize if Team A win			if(.bg_id_w == -1){ getitem 605,1;} //If Match Draws			else if( getcharid(4) == .bg_id_w ) { getitem 605,1;} //If Someone Wins		}	} 
 
Last edited by a moderator:
Maybe change line 116 to

Code:
for( set .i,1; .i <= getarraysize(.playerid[.i]); set .i,.i+1 ){
 
Last edited by a moderator:
Please avoid double, triple, quadruple, posting.. You must edit your first po and add what you want to say..

 
Last edited by a moderator:
Maybe change line 116 to

for( set .i,1; i <= getarraysize(.playerid[.i]); set .i,.i+1 ){
Thank you, for this.

Hello Dastgir Pojee

Another problem exist.

After the NPC announces the winner, It will not give the prize and wont warp you back to the prontera.?

but before I added this line the script works fine about warping back to prontera?

for( set .i,1; i <= getarraysize(.playerid[.i]); set .i,.i+1 ){ 
also tried this one

for( set .@i,1; getarraysize(.playerid[.@i]) < .@i; set .@i,.@i+1 ){ 

booth are not giving the prize

but the sequences are working fine, just don't have prize

 
Last edited by a moderator:
Maybe change line 116 to

for( set .i,1; i <= getarraysize(.playerid[.i]); set .i,.i+1 ){
Thank you, for this.Hello Dastgir Pojee

Another problem exist.

After the NPC announces the winner, It will not give the prize and wont warp you back to the prontera.?

but before I added this line the script works fine about warping back to prontera?

for( set .i,1; i <= getarraysize(.playerid[.i]); set .i,.i+1 ){ also tried this one

Code:
for( set .@i,1; getarraysize(.playerid[.@i]) < .@i; set .@i,.@i+1 ){ 
booth are not giving the prize

but the sequences are working fine, just don't have prize
Maybe some error in map-server on oot or at end of event, please report it.
 
I will thank you


I will use this line
 

for( set .i,1; i <= getarraysize(.playerid[.i]); set .i,.i+1 ){ 
 
Maybe change line 116 to

for( set .i,1; i <= getarraysize(.playerid[.i]); set .i,.i+1 ){
Maybe some error in map-server on oot or at end of event, please report it.

sorry for the late reply this is the error using this line
 

for( set .i,1; i <= getarraysize(.playerid[.i]); set .i,.i+1 ){ 

 Untitled.jpg


 
Last edited by a moderator:
Last edited by a moderator:
Updated post #12, i forgot a .

 
Updated post #12, i forgot a .
Testing

EDIT:

if u sing this one ( the game will end.) but no prize

for( set .i,1; i <= getarraysize(.playerid[.i]); set .i,.i+1 ){ 


if the updated

for( set .i,1; .i <= getarraysize(.playerid[.i]); set .i,.i+1 ){ 
it will not give you prize and the event will not end.

 
Last edited by a moderator:
Back
Top