Jump to content

Dark Theme was set as default for all members. Please report any issues here.

Ind

BG Queue: Questions

Recommended Posts

As you might have seen in the May 30 Patch, we've got most of it already coded, we just have a few questions left before we can have it be functional.

    [*]is there a minimum to join or officially min and max are the same? (and if is there a minimum, whats the criteria for it to start after minimum has been reached?)

    [*]Whats the official criteria for splitting teams? e.g. say you have 5 soloers, 3 parties (of 6, 8 and 10 members, respectively) in the queue, this totals 29 members, it'd let the match start unevenly?

    [*]whats the official maximum for a queue?

    [*](if 72 is greater than the maximum) say someone with a 72 on guild applies with his whole guild, what happens?

    [*]Is it possible that someone fills the queue entirely with allies (e.g. join with full guild assuming guild members match maximum members in queue)? If so what happens, queue is cancelled?

Share this post


Link to post
Share on other sites

 

Whats the official criteria for splitting teams? e.g. say you have 5

soloers, 3 parties (of 6, 8 and 10 members, respectively) in the queue,

this totals 29 members, it'd let the match start unevenly?

 

5 soloers, 3 parties (of 6, 8 and 10 members, respectively).

 

the match wouldnt start untill another soloers join.

 

so a queue will be.

 

1 2 3 4 5 [6 7 8 9 10 11] [ 12 13 14 15 16 17 18 19] [ 20 21 22 23 24 25 26 27 28 29] 30 <<< last one just joined.

 

team 1 :

1 2 3 4 5 30

 
team 2 :
[6 7 8 9 10 11]
 
 
ps.since a members in a same party will always be in a same team. So if your party join a queue with members more a required team member of bg game. your party would never be join a game.
Edited by purityz

Share this post


Link to post
Share on other sites

 

[*]Whats the official criteria for splitting teams? e.g. say you have 5 soloers, 3 parties (of 6, 8 and 10 members, respectively) in the queue, this totals 29 members, it'd let the match start unevenly?

[*]whats the official maximum for a queue?

[*](if 72 is greater than the maximum) say someone with a 72 on guild applies with his whole guild, what happens?

[*]Is it possible that someone fills the queue entirely with allies (e.g. join with full guild assuming guild members match maximum members in queue)? If so what happens, queue is cancelled?

 

As a personal opinion (they're not official):

  1. The match would wait for someone else to join or somebody to drop. Then it'll start. If it's impossible to accomodate all parties on the teams then it'll split the largest one (take a random one if there is more than one longest party).
  2. Don't know, but I've heard of  BGs that are up to 50vs50.Don't know if this is an official value. But I'd keep unlimited queue size for any other means other than BGs.
  3. Couldn't it be possible to instance the maps for making more than one BG of its class to be running at once?
  4. See 1st point. They'll be evenly split and start a match.

Share this post


Link to post
Share on other sites

 

 

[*]Whats the official criteria for splitting teams? e.g. say you have 5 soloers, 3 parties (of 6, 8 and 10 members, respectively) in the queue, this totals 29 members, it'd let the match start unevenly?

[*]whats the official maximum for a queue?

[*](if 72 is greater than the maximum) say someone with a 72 on guild applies with his whole guild, what happens?

[*]Is it possible that someone fills the queue entirely with allies (e.g. join with full guild assuming guild members match maximum members in queue)? If so what happens, queue is cancelled?

 

As a personal opinion (they're not official):

  1. The match would wait for someone else to join or somebody to drop. Then it'll start. If it's impossible to accomodate all parties on the teams then it'll split the largest one (take a random one if there is more than one longest party).
  2. Don't know, but I've heard of  BGs that are up to 50vs50.Don't know if this is an official value. But I'd keep unlimited queue size for any other means other than BGs.
  3. Couldn't it be possible to instance the maps for making more than one BG of its class to be running at once?
  4. See 1st point. They'll be evenly split and start a match.

+1

Share this post


Link to post
Share on other sites

oh there is something I forgot to ask, is there a minimum to join or officially min and max are the same? (and if is there a minimum, whats the criteria for it to start after minimum has been reached?)

Thanks

Share this post


Link to post
Share on other sites

Here are some of my suggestions. I don't know if these things will help.

 

1. GM can set the maximum # of players to join - if GM will trigger the event in game. Or you can set a default number for this. No minimum though. The event will start as soon as the maximum # of players reached - or set a timeout, if the team matches evenly, the event will start in a specific amount of time even if the maximum is not reached.

2. There will be 2 scenario for splitting the players:

2.a. Randomize the splitting of teams whether they have a party/guild or not. So this means one of their party member maybe at the other team, or with luck, they could be in one team.

2.b. The players can talk with parties internally if they want to play with party vs party/guild vs guild. They can set their parties before entering the event. Each party should match the number of members or maybe not.

2.c. Soloers that wanna join with some parties can be randomized.

3. How bout if you make 2 queues? One queue for each team?

Edited by cJei

Share this post


Link to post
Share on other sites

this is just my suggestion, I don't want to argue I'm just suggesting

 

 

1. If there is a minimum players, lets say the max is 10 vs 10, the minimum is 6 vs 6 to start the BG, if the minimum player's are met the BG will start and while the BG is ongoing other players can still join to fill up the 8 more slot, and if the maximum players are met then the registration for the BG is close, and when a player got disconnected or quit while the BG is ongoing the registration will open and fill up the slot for the player that disconnected.

 

Sorry if you don't agree with me, I just saw it on another server  using eamod, I don't compare, its just that I want the battleground of Hercules to be flexible.

Edited by thanna

Share this post


Link to post
Share on other sites

I tried to continue this and something came up,

AFAIK, there are no minimum to join.

 

5-5 for kvm

6-6 for VB,BB

since there is no minimum, when does it start? only when maximum is reached?

Share this post


Link to post
Share on other sites

 

I tried to continue this and something came up,

AFAIK, there are no minimum to join.

 

5-5 for kvm

6-6 for VB,BB

since there is no minimum, when does it start? only when maximum is reached?

 

on the official servers there are no minimum to join and it will only start if and only if the required/max players are met

Share this post


Link to post
Share on other sites

 

I tried to continue this and something came up,

 

 

AFAIK, there are no minimum to join.

 

5-5 for kvm

6-6 for VB,BB

 

since there is no minimum, when does it start? only when maximum is reached?

on the official servers there are no minimum to join and it will only start if and only if the required/max players are met

Yes! :D

Share this post


Link to post
Share on other sites

 

 

I tried to continue this and something came up,

 

AFAIK, there are no minimum to join.

 

5-5 for kvm

6-6 for VB,BB

since there is no minimum, when does it start? only when maximum is reached?

on the official servers there are no minimum to join and it will only start if and only if the required/max players are met

Yes! :D

+1

Share this post


Link to post
Share on other sites

 

It seems that whenever I use queueremove(qid,varid); it sets the varid value to -1 instead of rearranging it.

 

Example:

 

 

15000

-1

15001

 

Hey JayPee i allready reportet this bug to Ind ,  here is a thread with all bugs about the Battle/queue system 

 

http://herc.ws/board/topic/1302-bg-queue-debug/

Edited by ossi0110

Share this post


Link to post
Share on other sites

i have a working queue for herc bg, tested and working. Many may have the same type style script. I did some modifications to it. Altho it has modified src to allow some of it to work. Maybe you can modify even more for herc. Dono anyways ill post if you guys want to play with it to help push this project farther along.

// Battleground Queue Admin// *********************************************************************-	script	BG_Queue_Join	-1,{	end;OnInit:	// Configuration	// *****************************************************	// Battleground Rotation - Main NPC name	setarray .BG_Arenas$[0],	     "Flavius_CTF",  "Tierra_EOS",     "Tierra_TI",     "Flavius_TD","Tierra_Boss","Conquest",   "Flavius_SC","Tierra_DOM",    "Rush";	// Battleground Arena Name - for announcements	setarray .BG_Names$[0],		"Capture the Flag","Eye of Storm","Triple Inferno","Team DeathMatch",    "Bossnia","Conquest","Stone Control","Domination",    "Rush";	// Minimum Players to start the BG	setarray .BG_Min[0],	                         1,             1,               1,                1,            1,        1,              1,           1,        1;	// Maximum Players per Team	setarray .BG_Max[0],	                        2,            2,              2,               2,           2,        2,             2,          2,        2;	// BG Message Colors	setarray .BG_Color$[0],	                "0xA0522D",    "0x4169E1",      "0x696969",       "0x808000",   "0x483D8B","0xFFA500",     "0x9ACD32",  "0x4169E1","0xDDA0DD";	// Team Building Mode : 0 = Lineal | 1 = Random | 2 = Class Priority | 3 = Faction Mode | 4 = Team Color ( by script set Bat_Team,N; )	set .TeamMode, 0;	// Main Code	// *****************************************************	set .BG_Count, getarraysize(.BG_Arenas$);	set .BG_Queue, bg_queue_create("Battleground Arena","BG_Queue_Join::OnJoinEvent",80);	set .VS_Queue, bg_queue_create("Free For All Arena","BG_Queue_Join::OnVersusJoin",80);	// Move to Next Arena	if( $BG_Index >= .BG_Count ) set $BG_Index,0; // Restart Rotation	set .BG_Arena$,.BG_Arenas$[$BG_Index];	set .Ready, 1;	donpcevent "BG_Queue_Join::OnDoHappyHour";	initnpctimer; // Rotation if BG don't start... Comment if you don't want to use this method	// Comment the next two lines if you don't want to allow @joinbg and @leavebg commands.	bindatcmd "joinbg","BG_Queue_Join::OnDoJoin",0,99;	bindatcmd "leavebg","BG_Queue_Join::OnDoLeave",0,99;	end;OnDoJoin: // @joinbg	if( checkquest(8506,PLAYTIME) == 2 )		erasequest 8506;	if( checkquest(8506,PLAYTIME) != -1 )	{		dispbottom "[You are a Deserter. You can't participate until the indicator goes off]";		end;	}	bg_queue_join .BG_Queue;	end;OnDoLeave: // @leavebg	bg_queue_leave .BG_Queue;	end;OnRotate:OnTimer120000: // Rotation if BG don't start... Comment if you don't want to use this method. 120 = 2 Minutes	set [email protected]_Status, 0;	// Warps Teams	bg_warp [email protected]_Team1,"bat_room",155,150;	bg_warp [email protected]_Team2,"bat_room",155,150;	bg_warp [email protected]_Team3,"bat_room",155,150;	// Destroy Teams	bg_destroy [email protected]_Team1; set [email protected]_Team1, 0;	bg_destroy [email protected]_Team2; set [email protected]_Team2, 0;	bg_destroy [email protected]_Team3; set [email protected]_Team3, 0;	// Move to Next Arena	if( set($BG_Index,$BG_Index + 1) >= .BG_Count )		set $BG_Index,0; // Restart Rotation	set .BG_Arena$,.BG_Arenas$[$BG_Index];	initnpctimer; // Rotation if BG don't start... Comment if you don't want to use this method	// Trigger the Event - Maybe people is waiting...OnJoinEvent:	if( [email protected]_Status == 2 )		end; // BG Ending... Must wait until OnRotate is called	set [email protected]_Count, bg_queue_data(.BG_Queue,0);	switch( [email protected]_Status )	{	case 0: // Idle - Ready to Start		if( .BG_Arena$ == "Tierra_TI" )			set [email protected], .BG_Min[$BG_Index] * 3;		else			set [email protected], .BG_Min[$BG_Index] * 2;		if( bg_queue_checkstart(.BG_Queue,.TeamMode,( (.BG_Arena$ == "Tierra_TI") ? 3 : 2 ),.BG_Min[$BG_Index]) )		{			donpcevent .BG_Arena$ + "::OnBuildTeams";			// Fill Teams with Queue Members						if( .BG_Arenas$[$BG_Index] == "Tierra_TI" )				bg_queue2teams .BG_Queue,.BG_Min[$BG_Index],.BG_Max[$BG_Index],.TeamMode,[email protected]_Team1,[email protected]_Team2,[email protected]_Team3;			else				bg_queue2teams .BG_Queue,.BG_Min[$BG_Index],.BG_Max[$BG_Index],.TeamMode,[email protected]_Team1,[email protected]_Team2;			stopnpctimer; // Rotation if BG don't start... Comment if you don't want to use this method			set [email protected]_Status,1;			set [email protected]$, "Battleground -- " + .BG_Names$[$BG_Index] + " -- Begining";			announce [email protected]$,.BG_Color$[$BG_Index];			donpcevent .BG_Arena$ + "::OnReady";		}		else		{			set [email protected]$, "Battleground -- " + .BG_Names$[$BG_Index] + " -- " + ([email protected] - [email protected]_Count) + " more players to start.";			announce [email protected]$,0,.BG_Color$[$BG_Index];		}		break;	case 1: // Running - Others can join		if( [email protected]_Count > 0 )		{			if( .BG_Arena$ == "Tierra_TI" )			{				bg_balance_teams .BG_Queue,.BG_Max[$BG_Index],.TeamMode,[email protected]_Team1,[email protected]_Team2,[email protected]_Team3;				set [email protected]_Count1, bg_get_data([email protected]_Team1,0);				set [email protected]_Count2, bg_get_data([email protected]_Team2,0);				set [email protected]_Count3, bg_get_data([email protected]_Team3,0);				set [email protected]$, "Battleground -- " + .BG_Names$[$BG_Index] + " -- B: " + [email protected]_Count1 + "/" + .BG_Max[$BG_Index] + ", R: " + [email protected]_Count2 + "/" + .BG_Max[$BG_Index] + ", G: " + [email protected]_Count3 + "/" + .BG_Max[$BG_Index] + " (Playing)";			}			else			{				bg_balance_teams .BG_Queue,.BG_Max[$BG_Index],.TeamMode,[email protected]_Team1,[email protected]_Team2;				set [email protected]_Count1, bg_get_data([email protected]_Team1,0);				set [email protected]_Count2, bg_get_data([email protected]_Team2,0);				set [email protected]$, "Battleground -- " + .BG_Names$[$BG_Index] + " -- B: " + [email protected]_Count1 + "/" + .BG_Max[$BG_Index] + ", R: " + [email protected]_Count2 + "/" + .BG_Max[$BG_Index] + " (Playing)";			}			announce [email protected]$,.BG_Color$[$BG_Index];		}		break;	}	end;OnVersusJoin:	if( [email protected]_Status != 0 )		end;	set [email protected]_Count, bg_queue_data(.VS_Queue,0);	if( [email protected]_Count >= 10 )	{		donpcevent "FFA_Arena::OnBuildTeams";		bg_queue2teams .VS_Queue,1,1,0,[email protected]_Team[0],[email protected]_Team[1],[email protected]_Team[2],[email protected]_Team[3],[email protected]_Team[4],[email protected]_Team[5],[email protected]_Team[6],[email protected]_Team[7],[email protected]_Team[8],[email protected]_Team[9];		set [email protected]_Status,1;		announce "Battleground -- Free For All -- Begining",0,0x483D8B;		donpcevent "FFA_Arena::OnReady";	}	else		announce "Battleground -- Free For All -- " + (10 - [email protected]_Count) + " more players to start",0,0x483D8B;	end;OnFri0600: // Friday, 6 a.m.	//rankreset 1; // Ranking Reset (Disabled)	end;// BattleGround Happy HourOnDoHappyHour:OnClock1600:OnClock1800:OnClock2000:OnClock2200:	switch( gettime(4) )	{	case 1:	case 3:	case 5:		if( gettime(3) >= 20 && gettime(3) < 22 )		{			announce "-- Battleground Happy Hour has begun | Ranked Arena Mode --",0,0x00FF00;			setbattleflag "bg_reward_rates",120; // +20% Reward Rates			setbattleflag "bg_ranked_mode",1;			end;		}				if( gettime(3) == 22 )		{			announce "-- Battleground Happy Hour is over | Regular Arena Mode --",0,0x00BFFF;			setbattleflag "bg_reward_rates",100; // Normal Rates			setbattleflag "bg_ranked_mode",0;			end;		}		break;	case 2:	case 4:	case 6:		if( gettime(3) >= 16 && gettime(3) < 18 )		{			announce "-- Battleground Happy Hour has begun | Ranked Arena Mode --",0,0x00FF00;			setbattleflag "bg_reward_rates",120; // +20% Reward Rates			setbattleflag "bg_ranked_mode",1;			end;		}				if( gettime(3) == 18 )		{			announce "-- Battleground Happy Hour is over | Regular Arena Mode --",0,0x00BFFF;			setbattleflag "bg_reward_rates",100; // Normal Rates			setbattleflag "bg_ranked_mode",0;			end;		}		break;	}	end;}// Registration NPC// *********************************************************************-	script	BG_Register	-1,{	if( getvariableofnpc(.Ready,"BG_Queue_Join") == 0 )		donpcevent "BG_Queue_Join::OnInit";	mes "[^FFA500Battle Recruiter^000000]";	mes "This is the Battleground Information and Registration service.";	mes "What do you want to do?";	next;	switch( select("^FFA500Battleground Arenas^000000:^0000FFFree For All Arena^000000:Warp to Battle Room") )	{	case 1:		mes "[^FFA500Battle Recruiter^000000]";		mes "Battlegrounds Arena are different kinds of games where Teams fight for victory.";		mes "What do you want to do?";		next;		switch( select("Register:Party Register:Leave Queue:Battleground Help") )		{		case 1:			if( BaseLevel < 80 )			{				mes "[^FFA500Battle Recruiter^000000]";				mes "Min required level to join a battleground is 80.";				close;			}			if( checkquest(8506,PLAYTIME) == 2 )				erasequest 8506;			if( checkquest(8506,PLAYTIME) != -1 )			{				mes "[^FFA500Battle Recruiter^000000]";				mes "You are a Deserter. You can't participate until the indicator goes off";				close;			}			mes "[^FFA500Battle Recruiter^000000]";			mes "Let's proceed with the registration...";			mes "You must wait on any City until BG starts.";			mes "Close this window to continue...";			close2;			bg_queue_join getvariableofnpc(.BG_Queue,"BG_Queue_Join");			end;		case 2:			if( getcharid(1) == 0 )			{				mes "[^FFA500Battle Recruiter^000000]";				mes "You are not on a Party.";				close;			}			mes "[^FFA500Battle Recruiter^000000]";			mes "Let's proceed with the registration...";			mes "You must wait on any City until BG starts.";			mes "Close this window to continue...";			close2;			bg_queue_partyjoin getcharid(1),getvariableofnpc(.BG_Queue,"BG_Queue_Join");			end;		case 3:			mes "[^FFA500Battle Recruiter^000000]";			mes "If you are registered, you will be removed.";			mes "Are you sure?";			next;			if( select("Yes, leave queue:No, I will stay") == 2 )			{				mes "[^FFA500Battle Recruiter^000000]";				mes "Ok, nothing to change.";				close;			}			mes "[^FFA500Battle Recruiter^000000]";			mes "Close this window to continue...";			close2;			bg_queue_leave getvariableofnpc(.BG_Queue,"BG_Queue_Join");			end;		case 4:			mes "[^FFA500Battle Recruiter^000000]";			mes "Tell me... what battleground you don't understand?";			next;			switch( select("Capture the Flag:Team DeathMatch:Stone Control:Eye of Storm:Bossnia:Domination:Triple Inferno:Conquest:Rush") )			{			case 1:				mes "[^FFA500Battle Recruiter^000000]";				mes "The objective of the Flavius Battle CTF is to score 3 points before your enemy, by capture their Flag.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "To capture a Flag you need to take the enemy flag, and bring it to your base flag.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "If your base flag is captured too, you need to kill the flag carrier and take the flag back to your base.";				break;			case 2:				mes "[^FFA500Battle Recruiter^000000]";				mes "Kill all the enemy players to let their Team without points.";				mes "Protect our army.";				break;			case 3:				mes "[^FFA500Battle Recruiter^000000]";				mes "Take the Stones in the middle of the battlefield and put in on your base, in the Stone Points.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "Each Stone will give points to your team. First team reach 99 points wins the game.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "Protect your stones from to be captured by the enemy.";				break;			case 4:				mes "[^FFA500Battle Recruiter^000000]";				mes "There are two bases, North and South which teams can capture by holding position on the Base more than the other team.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "Each base will give you points each 5 seconds of Domination. If your Team control both bases the amount of points increases.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "To get aditional points, in the middle there is a Flag spawn, capture it and put it on any of your team Bases.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "The first Team reach 99 points wins the match.";				break;			case 5:				mes "[^FFA500Battle Recruiter^000000]";				mes "Attack the enemy base and destroy each MVP Guardian. To do damage to the guardian your team must capture the Balance Flag in the middle base.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "Each team have 5 guardian to be protected or killed.";				break;			case 6:				mes "[^FFA500Battle Recruiter^000000]";				mes "There are three bases, North, Center and South which teams can capture by holding position on the Base more than the other team.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "Each base will give you points each 5 seconds of Domination.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "The first Team reach 99 points wins the match.";				break;			case 7:				mes "[^FFA500Battle Recruiter^000000]";				mes "There are 3 teams in the battlefield, your team and other 2 enemies.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "Kill the enemy players, collect the skulls and bring then to the Sacrifice Totem to win points.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "You can collect your own team skulls and bring then to your Sacrifice Totem to avoid other teams to score.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "If you get killed all your skulls will be drop to the floor, including your own skull. First Team to get 80 points wins the battle.";				break;			case 8:				mes "[^FFA500Battle Recruiter^000000]";				mes "If you are Attacking, destroy the enemy defenses and it's Flag.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "If you are Defending, protect your castle defenses and the Flag.";				break;			case 9:				mes "[^FFA500Battle Recruiter^000000]";				mes "Fight to capture the Castle and organize your team to defend it.";				next;				mes "[^FFA500Battle Recruiter^000000]";				mes "If you fail on the first capture, kill the defender and take it for your team.";				break;			}			break;		}		close;	case 2:		mes "[^FFA500Battle Recruiter^000000]";		mes "Free For All Arena is a Duel between 10 players with No Teams.";		mes "The target is to kill 25 players.";		mes "What do you want to do?";		next;		switch( select("Register:Leave Queue") )		{		case 1:			if( BaseLevel < 80 )			{				mes "[^FFA500Battle Recruiter^000000]";				mes "Min required level to join a battleground is 80.";				close;			}			if( checkquest(8506,PLAYTIME) == 2 )				erasequest 8506;			if( checkquest(8506,PLAYTIME) != -1 )			{				mes "[^FFA500Battle Recruiter^000000]";				mes "You are a Deserter. You can't participate until the indicator goes off";				close;			}			mes "[^FFA500Battle Recruiter^000000]";			mes "Let's proceed with the registration...";			mes "You must wait on any City until BG starts.";			mes "Close this window to continue...";			close2;			bg_queue_join getvariableofnpc(.VS_Queue,"BG_Queue_Join");			end;		case 2:			mes "[^FFA500Battle Recruiter^000000]";			mes "If you are registered, you will be removed.";			mes "Are you sure?";			next;			if( select("Yes, leave queue:No, I will stay") == 2 )			{				mes "[^FFA500Battle Recruiter^000000]";				mes "Ok, nothing to change.";				close;			}			mes "[^FFA500Battle Recruiter^000000]";			mes "Close this window to continue...";			close2;			bg_queue_leave getvariableofnpc(.VS_Queue,"BG_Queue_Join");			end;		}		break;	case 3:		mes "[^FFA500Battle Recruiter^000000]";		mes "May the War God bless you.";		close2;		warp "bat_room",155,150;		end;	}	end;}bat_room,160,150,3	duplicate(BG_Register)	Battle Recruiter#bat	728// prontera,155,180,4	duplicate(BG_Register)	Battle Recruiter#prt	728
Edited by Azul

Share this post


Link to post
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
Reply to this topic...

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

×
×
  • Create New...

Important Information

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