Jump to content
ImportBot

BalanceServerSeeders (4.0.0.4 - 21-April-2014): Distribute server seeding players

Recommended Posts

Originally Posted by Flyswamper*:

 

After a couple of years of constantly bugging the plugin developers around here, I have finally invested enough time and energy to get myself up to speed with C# so that I could code myself a simple little plugin. Even though it is really really simple and not that well written, it does seem to perform a task that is useful to me and perhaps somebody else out there that might be seeding their servers to get them populated. So, I thought I'd share this with the community in hopes it might help somebody. I'd also love to get any constructive feedback on things I should have done differently or problems. And with that little intro, here are some details of my first attempt at a plugin.....

 

 

Plugin Name: BalanceServerSeeders

Last Updated: 21-April-2014(version 4.0.0.4)

Author: Flyswamper,

Balance Fix: EBassie

 

Plugin description: The intent of the plugin is to allow admins to designate specific solider accounts as "server seeders." These soldier accounts are ones that are used frequently to login to the server and just sit there idle (or AFK) in order to help get the server started (i.e. get the server fully populated). The plugin attempts to keep these pre-designated server seeding accounts evenly balanced between team 1 and team 2 so that neither team is disadvantaged by having lots more afk/idle seeders on their team.

 

The logic of the plugin is something like this

  • Admin designates two or more soldier accounts as "seeders" for the server.
  • The plugin continuously monitors how many of these pre-designated seeders are logged into the server
  • The plugin will balance these seeders (who are idle/afk) between team 1 and team 2
  • For Rush mode, if an odd number of inactive seeders are online, the plugin should insure that defenders have the extra seeder
  • For Non-Rush modes. The admin has the choice of two methods. Method 1 will place any extra/odd-numbered seeder on the team that has the highest number of "real" players (and hopefully let another balancer move real players when needed). Method 2 will place any extra/odd-numbered seeder on the team with the highest score.
  • The plugin does NOT monitor or balance/move any players except those designated as seeders. (other plugins can do this)

Note that the plugin has the ability to detect when seeders are actively playing. When this is detected, the seeders will not be be balanced by this plugin. Activity can be detected by score increases, spawn events, or chat message events from the seeder and the time of apparent inactivity is configurable for the seeder to be included in the balancing logic.

 

The plugin also gives you options and controls to be able to kick idle seeders once the server gets populated.

 

Important Note: If you are using any other "balancer" plugins they might compete with what this one does. You really *MUST* make sure the soldiers that are designated as seeders and monitored by this plugin are whitelisted in TrueBalance, Insane Balancer, etc..... at least for the in-round live-balancing. Failure to do this can result in the situation where this plugin and the other balancer plugin rapidly move players back-n-forth between teams.

 

Note added 18-Oct-2013:

I've added an option in version 4.0.0.3 so that the plugin can (optionally) automatically consider all players as seeders and apply the balancing logic. Because the plugin only balances and kicks when it detects seeders as being inactive/idle, this essentially turns this plugin into an idle-player manager plugin if you enable this option. The above warning/caution about potential conflicts is especially important to consider if you are running another balancer as it could result in a plugin-war that swaps players back-n-forth repeatedly. I'm told that Multibalance is (or can be) configured such that if this plugin swaps a player that it won't swap them back... so the two supposedly play together nicely. But.... the recommendation is to treat/use this feature with caution and watch what it does for a while before unleashing it on your server.

 

 

---------------------------------

Version_History:

 

 

- Version history

 

4.0.0.4 21-April-2014

- Fixed Seeder Balancing (EBassie)

 

4.0.0.3 18-Oct-2013

- Added logic that allows you to treat all players as if they are seeders. Use with caution and as this could conflict with other balancer plugins and cause a player-swapping-war between plugins

- Added a simulate mode that should allow you watch what the plugin thinks it should do without actually letting the plugin balance/move or kick any players.

 

3.6.0.0 19-Sept-2013

- Added logic to disable kicking of seeders at the end and beginning of rounds.

 

3.5.0.0 3-May-2013

-Add logic to detect CTF mode and force player-count based logic when CTF detected since tickets are not reported to Procon in CTF

 

3.4.0.0 31-Mar-2013

- Change the event that triggers an idle seeder kick (was serverinfo, now is player list) to avoid CTF problem that resulted in no kicking of idle seeders even if it was selected.

 

3.3.0.0 4-Jan-2013

- Add ability for admin to select extra seeder going to attackers or defenders for Rush Mode

- Changed user input to be more intuitive (Player_Based or Ticket_Based, instead of method 1 or 2)

 

3.2.0.0 28-Dec-2012

- Added code to force any inactive seeders to squad 0 (out of any squad I think/hope)

(code hasn't been tested, but it was a really really minor addition/change)

 

3.1.0.0 7-Sep-2012

- Added ability to customize kick reason message

- Fix some typos in the help screen

- Changed version number back to 4 digit system so this plugin shows up in Phogue's plugin usage monitoring system.

 

3.1.0.0 7-Sep-2012

- Added ability to customize kick reason message

- Fix some typos in the help screen

- Changed version number back to 4 digit system so this plugin shows up in Phogue's plugin usage monitoring system.

 

3.0 5-Sep-2012

- Added functionality to kick idle seeders once the server gets populated.

 

2.0.3.1 2-Sep-2012

- Fix a bug that prevented plugin settings from getting saved. Without this fix whenever you restart ProCon you'll lose your seeder list and the plugins settings (will go back to default)

- Tidy-up work on the debug output... just to make it more useful and to make the debug_levels adjust in a more logical way.

 

 

- Version history

2.0.3.0 29-Aug-2012

- Improved idle/active detection for seeders. Activity now detected (optionally) by score increase, spawn events, or chat events

- Begin using yes/no for admin-user configuration settings where appropriate

 

2.0.2.3 17-Aug-2012

- Cleaned up code internally...mostly bug fixing and revising of diagnostic output to the plugin console.

- Added a few more debug levels for output. Levels 0-7 are now implemented so they give different (more/less) output. Plugin shows you could have debug up to 10 (8-10 are same as 7 at the moment).

 

2.0.1.1 15-July-2012

- Squished a bug that would cause code to goto into endless while loop if first seeder wasn't the one to move (duh!)

- Add more diagnostic output when user sets debug level to 5.

 

 

2.0.1.0 14-July-2012

- Revised code so that it would detect whether rush mode is active.

- If Rush mode is active and an odd number of inactive seeders are online, the extra seeder should now be forced to the defenders team

- If mode is NOT Rush and an odd number of inactive seeders are online, the extra seeder should now be forced to team 1. This *should* help keep non-seeder player counts more balanced when the server population is low.

 

2.0.0.4 2-May-2012

- Bug fix which caused seeder score not to get reset resulting in tracking seeders max score instead of most recent score increase

 

 

2.0.0.3 28-Apr-2012

- Improved diagnostic output

- Cleaned up internal coding a bit with no real change (hopefully) to program behavior

 

2.0.0.2 23-Apr-2012

- Bug fixing related to still detecting "ghosted" seeders that are no longer online

 

2.0.0.1 21-Apr-2012

- Rewrote most of the code to do a much better/cleaner job of detecting if a seeder is actively playing or not based on a time threshold since last scoring change.

- Improved the volume and layout of information provided on the details/info screen within the plugin

 

 

1.0.1.5 21-Apr-2012

- Fixed a problem where seeders were detected online even after they had left the server (duh!).

(this version will be uploaded later today... needs more bug squishing!)

 

 

1.0.1.4 17-Apr-2012

- Uploaded what *should* have been 1.0.1.3 but apparently I messed up the zipping and upload of the file and didn't get the fully corrected version online here. Changing version to 1.0.1.4 as a result

 

1.0.1.3 15-Apr-2012

  • Added logic that should do a much better job of detecting when designated seeders are actively playing so that active-seeders do not get balanced/moved by this plugin

 

1.0.1.2 11-March-2012

  • Fix typo and re-upload new version to phogue.net
  • Rename plugin to BalancerServerSeeders (ya..I know... shoudln't rename, but it really is a much better name)

1.0.1.1 7-March-2012

  • Fix A couple of issues where text written to plugin console log was incorrect. (doesn't affect functionality)

1.0.1.0 6-March-2012

  • Make sure full player list is received before taking action
  • Implemented code suggestions from stealth
  • Added debug-output levels
  • A seeder won't be considered a seeder if he has a non-zero score now.
  • Changed plugin name from CKeepCampersApart to CKeepSeedersApart

 

1.0.0.0 5-March-2012 Initial version

 

 

 

 

-------------------------------------------

 

To install, download the attached file and unzip it. Copy the BalanceServerSeeders.cs file to your "plugins\BF3" of "plugins\BF4" directory under where ever ProCon is installed.

 

Attached Files:


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Reserved just in case.

 

Truth be told, I haven't a clue why standard operating procedure seems to be reserve/grab the second post in a plugin thread, but I'm a mindless sheep so here is this post to grab it!


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by feeblemedic*:

 

sounds good flyswamper, i'm gonna try this out soon. Thanks!


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by stealth*:

 

In OnListPlayers you need to add a check for the right subset. When you receive a list it could be of a squad, team or all. In the first 2 cases it would mess up your plugin.

 

Code:

if (cpsSubset.Subset == CPlayerSubset.PlayerSubsetType.All)
You are listening for a lot of events, but only defining onPlayerJoin and onListPlayers I'm not sure if this has any impact on procon, but I don't think it's good practice in any case.

 

I've always been taught to be lazy (never write the same code twice), never break out of a loop and try to use as few loops as possible (since they take the most time to execute). Following those guidelines I rewrote your function UpdateCampers:

 

Code:

public void UpdateCampers(List<CPlayerInfo> players)
            {
                // go through the list of online campers and make sure they are on opposite teams
                int team1_count = 0;
                int team2_count = 0;
                for (int ndx = 0; ndx < onlineCamperList.Count; ndx++)
                {
                    if (onlineCamperList[ndx].teamid == 1) { team1_count++; }
                    if (onlineCamperList[ndx].teamid == 2) { team2_count++; }
                }
				//  Presume team2_count is larger
				int moveTo = 1;
				int moveFrom = 2;
				int difference = team2_count - team1_count;
                if (team1_count > team2_count) { // Check
					// It's not team1_count is larger
					moveTo = 2;
					moveFrom = 1;
					difference = difference * -1
				}
				this.ExecuteCommand("procon.protected.pluginconsole.write", "Detected too many campers on Team " + moveFrom + " difference = " + difference);
				
				int i = 0;
				while (i < onlineCamperList.Count && difference > 1) {
					if (onlineCamperList[i].teamid == moveFrom) {
						this.ExecuteCommand("procon.protected.send", "admin.movePlayer", onlineCamperList[i].soldierName, moveTo, "0", "true");
						difference--;
                        this.ExecuteCommand("procon.protected.pluginconsole.write", string.Format("Moving camper {0} to Team 1", players[i].SoldierName));
					}
					i++;
				}
            }
Also you often seem to make a variable per debug message (buffer, buffer2, buffer3) wouldn't it be easier to make 1 variable and then just replace it's content each time? For example:

 

Code:

string buffer = string.Format("Player count {0}", players.Count);
			this.ExecuteCommand("procon.protected.pluginconsole.write", buffer);
			buffer = string.Format("Online Camper count {0}", onlineCamperList.Count);
			this.ExecuteCommand("procon.protected.pluginconsole.write", buffer);
Or shorter:

Code:

this.ExecuteCommand("procon.protected.pluginconsole.write", string.Format("Player count {0}", players.Count));
			this.ExecuteCommand("procon.protected.pluginconsole.write", string.Format("Online Camper count {0}", onlineCamperList.Count));
Or even better define a function to display messages, this will make it easier later to enable or disable the messages:

 

Code:

public void debugMsg(string msg)
			{
				if (msg != null && !msg.Equals("") && m_debug.Equals(enumBoolYesNo.Yes)) // check for empty strings and is debug enabled_
				{
					this.ExecuteCommand("procon.protected.pluginconsole.write", msg);
				}
			}

			public override void OnListPlayers(List<CPlayerInfo> players, CPlayerSubset subset)
			{
				// ... Code ...
				debugMsg(string.Format("Player count {0}", players.Count));
				// ... Code ...
			}
I could have made some minor errors here and there since I typed this in notepad++, but I hope it helps! :smile:

* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

In OnListPlayers you need to add a check for the right subset. When you receive a list it could be of a squad, team or all. In the first 2 cases it would mess up your plugin.

Thanks VERY much. I wrote this plugin in a big hurry and didn't bother to check what was "up" with the subset. That was one of the things I figured that I had better go back and figure out, but I didn't realize whether there was a problem there or not. Appreciate the tip!

 

 

You are listening for a lot of events, but only defining onPlayerJoin and onListPlayers I'm not sure if this has any impact on procon, but I don't think it's good practice in any case.

Yeah...I am aware of this. When I sat down to start coding I had the concept in my mind that I would keep my own player and camper lists within my code and that I'd listen for joining/leaving events to keep my own lists updated. I ended up just repeatedly relying on the current playerlist instead, but I never when back and got rid of those unnecessary events that I registered for. Excellent thing to point out. It is something that I knew about, but for this first version I left quite a bit of sloppy stuff in there just case I was so happy with myself at getting a plugin working...he he... My intent is to clean it up in the coming days (probably next weekend) when I get some time and issue a minor revision.

 

I've always been taught to be lazy (never write the same code twice), never break out of a loop and try to use as few loops as possible (since they take the most time to execute). Following those guidelines I rewrote your function UpdateCampers:

Again, appreciate the effort you took here and I'll have a look through that and maybe adopt it (or morph it into my own slightly different version) for the next iteration. Again, I'll just plead that I wasn't too worried about code efficiency here with such a tiny and simple plugin.... but good points on how to clean it up a little more.

 

 

Also you often seem to make a variable per debug message (buffer, buffer2, buffer3) wouldn't it be easier to make 1 variable and then just replace it's content each time?

 

...

 

Or even better define a function to display messages, this will make it easier later to enable or disable the messages:

Yeah.... my intent is to write a separate function to display the messages. That is how I wrote my much larger C# code for a recent work project that I created. Again...I can only plead laziness and hastiness to send this one out.

 

I could have made some minor errors here and there since I typed this in notepad++, but I hope it helps! :smile:

It is VERY much appreciated! I was mainly hoping for the stuff like your first comment where I had assumed something that could make the code not function as intended. To me, that is the "biggie" that I should have caught and done differently. The rest of the stuff is excellent advice and will make the code cleaner but not really affect the functionality (still appreciated though).

 

I really do want to have the code detect when one of these desginated campers is actually playing instead of being AFK. Without doing that, the admin/camper will probably want to disable the plugin when they are playing and remember to re-enable it when they stop. As such, there could be times that it gets disabled and they forget to re-enable it. Will be much better if it takes care of itself. When I do that, I should clean up the code a bit!


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by leibhold*:

 

One suggestion - change the name

 

Keep seeders apart ?

 

Initial thought it was to keep campers apart - in campers as in spawn/base campers...


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Thanks... I hadn't thought of that. I tend to call these players "campers" because we just put them on the server and they "camp" there sorta.... But, I think you are right. Most of the gaming community thinks something different when they hear the word campers. So.... along with the other changes I made tonight, I went ahead and changed the name...

 

Good suggestion!


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Revised some wording being sent to the pluginConsole window. Does not affect functionality. But, does correct the situation where plugin console said it was moving player A but actually was moving player B. (it was moving the correct player, just the message to the console-log window was wrong).


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by HelloKitty*:

 

One suggestion - change the name

 

Keep seeders apart ?

 

Initial thought it was to keep campers apart - in campers as in spawn/base campers...

thought the same. Would have named it "Balance Seeders" or something...

* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Thanks Kitty. I think your Balance Seeders name is even better. I'll probably switch it to that here shortly. It seems that the name and my description of it didn't do the greatest job of explaining what the plugin does. I've re-written the original post just a bit to help clarify. The key is that it will balance the seeders, but... it will ONLY affect the seeders that are designated ahead of time by typing their soldier-names into the plugin settings. It leaves any idle-kicking, balancing of random idle players, etc.... left for other plugins to manage. It *ONLY* balances soldier accounts that you have designated as your official "seeders" for your server.

 

In the few days I've run it on our server it has allowed me/us to keep TrueBalancer running with the skill-scrambler option turned on. This attempts to balance the teams at the start of the round. It can result in our seeders getting lumped together on the same team. This little plugin will quickly put them back on opposite teams and let TrueBalancer clean-up the rest of the details.

 

I have thoughts/wishes/tentative-plans to expand what this plugin does. Right now I'm thinking I might make it manage both the seeders as well as detected idle players. I can imagine it watching 3 groups of players and depending on thresholds either balancing those players or kicking them for being idle. The groups I'm thinking about would be 1) designated seeders, 2) players that have had a zero-score for a designated amount of time, and 3) players who have a non-zero score that hasn't changed in a designated amount of time. The general idea would be to set player-population and time thresholds where players in any of these three groups could be either balanced or kicked for being idle. I also imagine setting a time-of-day window where kicking for idle would occur and where it would not (idea is to kick players during primetime, but avoid kicking anybody even if server is full during the servers normally empty time periods). Don't know if I'll really do any/all of this, but..... those are the random thoughts I have.

 

For now though.... it is my first plugin and I've purposely started with a REALLY REALLY simple concept... Balance pre-designated seeders.


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Legate*:

 

Hi,

 

I tried to use the plugin but I found this error:

 

[10:40:47 87] Compiling CKeepSeedersApart.cs... Errors or Warnings

[10:40:47 87] CKeepSeedersApart.cs (Line: 128, C: 133) CS0117: 'PRoConEvents.Seeder' does not contain a definition for 'SoldierName'


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Seems my quick editing job with Notepad during my lunch-hour at work didn't go so well. I've re-zipped the corrected version and have uploaded it again to the first post in this thread.

 

I've also changed the name of the plugin based on the suggestions here. I know repeated name changes probably violate all sorts of coding consistency principles.... but the new name really is a lot more appropriate I think.


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Legate*:

 

I'll try again using the new version.

 

Thanks

 

Edit. set a soldier, just one, always on defender team could be possible?

 

We use one AFK soldier to start the server on SQRush mode, on the first round is set on defender team but when round change it's on attacker team....


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

If there is only one seeder, the plugin really shouldn't do anything. The logic goes something like this...

 

- Detect which soldiers online are seeders

- Count how many seeders on team 1

- Count how many seeders on team 2

- If the count of seeders on each team is 2 more than on the other team, start moving seeders until the difference is 1 or les between teams.

 

So...if you only have one seeder designated, this plugin will detect that account, but it will never see a situation where one team has 2 more seeders than the other team. So it should never move any of the seeders. On our server we typically have 2 or 3 soldier accounts which might be online and "seeding" at the same time. Thus it is quite possible that the server (built-in to server) balancer or another plugin moves these seeders all onto the same team. I've got up in the morning to find 3 seeders all on the same team. This is a situation that will prevent the server from starting and is the situation this plugin is targeted at. The plugin keeps the seeders "balanced" and I believe helps us get the server going.

 

Also, I hard coded the plugin to only expect Team 1 and Team 2. If you play a mode that has more than two teams, I *think* it will just distribute the seeders between team 1 and 2 and it will ignore team 3+.

 

 

----------------------------added on edit---------------

Duhhhhhhh... I just realized I wrote all that and didn't realize what you were asking. Are you asking if I could change it so that it would always put a single seeder on the defenders? Answer is I *think* that is likely possible. No promises, but perhaps I'll look into that.


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Legate*:

 

----------------------------added on edit---------------

Duhhhhhhh... I just realized I wrote all that and didn't realize what you were asking. Are you asking if I could change it so that it would always put a single seeder on the defenders? Answer is I *think* that is likely possible. No promises, but perhaps I'll look into that.

Was my bad (My english it's a complete disaster...)

 

 

That's exactly that I ask. Using this "strategy" just needs one player to start the server on SQRush mode. ;-)


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by plasma*:

 

This is perfect for me my server typically has 3-5 idlers in the A.M.

 

One question, if the seeder is no longer at idle.. ie. now playing... will your pluging attempt move this player to balance the idlers/seeders if ever needed? Or is that player now considered a non-seeder?


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

plasma,

 

If they are playing *AND* have a non-zero score, it shouldn't move them or even consider them a seeder anymore. However, if the round has *just started* and they haven't had a chance to score yet, it will consider them a seeder and will move them if it thinks it's needed. The checks/updates are everytime a full playerlist is received from the server. I think this is something like at 30 second intervals (but I haven't checked yet).

 

One of the things on my "to do" list is to add a bit more logic that would keep track of the last time the seeder scored and if he has scored anytime in the last X minutes then he wouldn't be a seeder and wouldn't be moved. Provided I set the time period long enough to take care of round-ending/starting gaps, I think this should work. But for now, it just checks their current score and it does so at about 30 second intervals.... so you might get moved at the start of a round even if you are actively playing and just haven't scored yet.


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by mrix2000*:

 

Hello all, I am a little confused to what this plugin actually does :huh:

Does it add like bots to the server making it look like there are more players on your server ? or does it show in the browser there are more players than there actually are?

How do you actually seed these players? just by adding a player name_?

 

The intent of the plugin is to allow admins to designate specific solider accounts as "server seeders." These soldier accounts are ones that are used frequently to login to the server and just sit there idle (or AFK) in order to help get the server started (i.e. get the server fully populated). The logic of the plugin is something like this

How is this actually done___? to designate specific solider accounts, is this a made up soldier account, is this an actual real soldier account, if it is how do I designate the player?

 

Thanks for any help

Cheers

mrix


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

It only deals with *REAL* soldier accounts that someone has bought and paid for. You/They use them to login to the game server and sit and wait for a game to start. This plugin just makes sure that all those accounts sitting there inactive in your game server are not all on the same team (thus making any new joiners to your server have nobody to play against).

 

You designate the names of the seeders within the plugin settings.

 

example usage:

- I use my *REAL* soldier account "Flyswamper" to login to our game server and I leave for work.

- My gaming buddy "jbaviper" uses his account to login to our game server and he leaves for work.

- We are running another plugin "TrueBalancer" which *might* sometimes put Flyswamper and jbaviper on the same team.

- My plugin will detect this occurrence and will put Flyswamper and jbaviper back on opposite teams, even while we are at work and not (as) able to correct this manually.

 

 

P.S. I have a good start to improved logic detecting when a designated seeder is actively playing. Hopefully I'll have a version with that which can be released soon.


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by mrix2000*:

 

If players have made the effort to stick their bodies on the server to help it get started I cant really see the point of this plugin?

Through procon you can manage the players anyway.

Sorry but I had the impression it actually filled the server with a few bots which would have been amazing.

Thanks anyway

Cheers

mrix


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by powerbits*:

 

If players have made the effort to stick their bodies on the server to help it get started I cant really see the point of this plugin?

Through procon you can manage the players anyway.

Sorry but I had the impression it actually filled the server with a few bots which would have been amazing.

Thanks anyway

Cheers

mrix

first i did too, but that would be amasing :smile:

 

 

maybe the best thing is to switch the seeder at defenders side in modes like rush or squadrush.. that ways players can at least arm a mcom :smile:


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

I may implement the suggestion to have more seeders on the defenders for rush mode when there is an uneven count of seeders. That sounds like it *might* be a reasonable suggestion, although I kinda want to guard against this facilitating a crazy-level of stat padding.

 

Sorry to disappoint on the other front. This isn't about imaginary bots. Instead, this plugin is targeted at admins that have "seeder accounts" and are in the practice of putting them on the server in AFK/IDLE status for extended periods of time. If that isn't you, then there really is no need to bother with this plugin in its current form. Someday in the future, I might turn this into an overall AFK/idle player manager plugin which would detect idle players, move them around, and kick them at appropriate times. There was a plugin written for BC2 that attempted to do that but I may have a shot at doing it myself. For now though, this simply balances "pre designated" server seeders so they don't get stacked up on one team. I use it daily on our conquest server.


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Well... I've had some time to play with this and I've improved the logic to detect when the "seeders" are active or not. Basically, I've made it so that if their score increases within a specified amount of time, then they are considered actively playing and won't be "balanced" with the other seeders.

 

If I could convince myself that it wouldn't just be a tool for stat-padding, I might implement the suggestion to make the program always put any "extra" seeders on either the defender or attacker (user specified setting). Because I haven't run a Rush server in ages, I am not exactly sure if team 1 is always the attackers or just how you tell which team is attacker and which is defender (through the rcon and ProCon data streams). I'm sure it's simple and I just gotta find it, but I don't know at the moment.

 

Will post the updated logic for better detection of when seeders are actively playing here shortly... Just want to test it a bit more before posting it.


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Version 1.0.1.3 uploaded to the initial post in this thread.

 

 

----- added on edit------

 

On further testing, it looks like I have some logic problem in the new code. I'll get a fix out tomorrow. In the meantime, suggest *NOT* installing the new one yet unless you are a coder and want to help me spot the problem. :smile:


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Found the bug.... had failed to update the teamID in a new section of the code. Uploaded new file and have it working now.


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Ok, folks.. In the event (however unlikely) that anybody downloaded version 1.0.1.3 within the last day or two. It seems that what I uploaded wasn't the finished version of the file. I had fixed the logic problem, but somehow I apparently just re-uploaded an older file and version 1.0.1.3 still has a serious logic problem.

 

So... I've relabeled what *should* have been version 1.0.1.3 and it is now 1.0.1.4. So.... please make sure you do not run 1.0.1.3 and you should update to 1.0.1.4!


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by cpt*:

 

Why so complicated? Just detect AFK-Players and distribute them just on both teams ;-)


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Sage-BRIG*:

 

Gonna give this a try now, we have needed something liek this for a long time, good job OP


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Why so complicated? Just detect AFK-Players and distribute them just on both teams ;-)

Several reasons for writing the plugin this way....

 

- It is *really* really simple logic which makes it easy to code as a first plugin/project for me. Coding something to detect all AFK players and balancing them is actually more complicated than what this does. (or did initially)

- I like to run other balancers on our server(s) like True Balancer or Insane Balancer. Depending on your settings for these, they will most likely move around afk player as well. But... if you like to preserve squads during balancing (as I prefer to do), the afk players can sometimes move with their squads and end up all on the same team. Trying to change this would be changing the logic of True Balancer, Insane Balancer, etc.... not so easy..

 

- You *could* write a stand-alone AFK manager but if you are running some other balancer/player-mover plugin then you run the risk of the plugins causing situations where players get into a plugin ping-pong match where plugin A moves them to Team 1 and plugin B moves them to Team 2. Because of this, I think the logic for handling AFK players really needs to be integrated into the logic of the active-player balancer.

 

- The little niche that this plugin does is that you can pre-designate your seeders *AND* make sure they are in your other plugin-balancer's white list. So they *shouldn't* be causing the ping-pong problem with player moves. My little plugin guarantees the KNOWN-DESIGNATED seeders are evenly spread out and the other plugin moves everybody else around to try and balance the server normally (if you have it using score it should help keep the other afk players relatively balanced as well...but there are problems if you preserve squads).

 

So... thats the motivation. It's a useless plugin if you don't put seeders on your server. But *IF* you do, then it might be of some benefit. At least if you like running another balancer and preserving squads through shuffles...


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Originally Posted by Flyswamper*:

 

Found another bug in 1.0.1.4 where it would think seeders are still online even after they have left the server. I will fix and upload a version 1.0.1.5 later in the evening.


* Restored post. It could be that the author is no longer active.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Our picks

    • I wanted I let you know that I am starting to build out the foundation for the hosting services that I talked about here. The pricing model I was originally going for wasn't going to be suitable for how I want to build it. So instead I decided to offer each service as it's own product instead of a package deal. In the future, hopefully, I will be able to do this and offer discounts to those that choose it.

      Here is how the pricing is laid out for each service as well as information about each. This is as of 7/12/2020.

      Single MySQL database (up to 30 GB) is $10 USD per month.



      If you go over the 30 GB usage for the database then each additional gigabyte is charged at $0.10 USD each billing cycle. If you're under 30GB you don't need to worry about this.


      Databases are replicated across 3 zones (regions) for redundancy. One (1) on the east coast of the USA, One (1) in Frankfurt, and One (1) in Singapore. Depending on the demand, this would grow to more regions.


      Databases will also be backed up daily and retained for 7 days.




      Procon Layer will be $2 USD per month.


      Each layer will only allow one (1) game server connection. The reason behind this is for performance.


      Each layer will also come with all available plugins installed by default. This is to help facilitate faster deployments and get you up and running quickly.


      Each layer will automatically restart if Procon crashes. 


      Each layer will also automatically restart daily at midnight to make sure it stays in tip-top shape.


      Custom plugins can be installed by submitting a support ticket.




      Battlefield Admin Control Panel (BFACP) will be $5 USD per month


      As I am still working on building version 3 of the software, I will be installing the last version I did. Once I complete version 3 it will automatically be upgraded for you.





      All these services will be managed by me so you don't have to worry about the technical side of things to get up and going.

      If you would like to see how much it would cost for the services, I made a calculator that you can use. It can be found here https://ezrcon.com/calculator.html

       
      • 10 replies
    • I have pushed out a new minor release which updates the geodata pull (flags in the playerlisting). This should be way more accurate now. As always, please let me know if any problems show up.

       
      • 6 replies
×
×
  • Create New...

Important Information

Please review our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.