Jump to content

Insane Limits V0.9/R6: Vote to nuke camping/base raping team, or !surrender (CQ/Rush)


ImportBot

Recommended Posts

Originally Posted by PapaCharlie9*:

 

Thank you alot :smile:! (I am so happy this works)

I removed the old line and inserted the new one. Seems to work :smile:.

 

 

On last thing, is it possible to threat the winners and losers equal like everyone votes for the same? And the team with the most tickets wins standard.

So what I mean like make !surrender obsolete.

But think that through. Suppose one team is winning by a small margin, say 700 to 680 tickets. If everyone can vote to end the round and only 4 votes are needed, 4 players on the winning team can vote and immediately end the round, guaranteeing the win for them and spoiling the game for the "losers".

 

In other-words, letting everyone vote is easily exploitable for cheating.

 

That's why the original code used a percentage and a high one at that. At least half of the players on a team had to vote to end the round. Plus, the winning team is restricted so that they can't have more votes than the losing team. And there is also a minPlayers limit, defaulted to 16, meaning at least 8 players per team to enable voting in the first place. You can change the value of minPlayers, though.

 

In any case, !surrender and !votenext already mean the same thing. If you want to just delete the !surrender part of the Regex.Match, that's fine. The commands are identical. You could leave it in and just tell players that the only command that works is !votenext.

 

I am really sorry for the storm of questions but i am totally new in the world of servers.

And also, for now i can modify relative easy commands now in Insanelimits but how to make a function work, I really do not know that yet.

 

I understand if it is to much trouble.

 

EDIT:

I already managed to get !votenext to !voterestart as command, by only changing *next* in this line, is that also enough, it works but everywhere i see votenext standing?

I think its ok like this or am I missing something?

 

"Match nextMatch = Regex.Match(player.LastChat, @"^\s*[@!](_:surrender|vote\s*restart)", RegexOptions.IgnoreCase);"

To be clear, the code from post #10 does not restart the round, it ends the current round with the winner having the most tickets and runs the next round in order.

 

So !voterestart doesn't make sense.

 

The only way to give credit to the winner is by ending the current round, restarting a round does not give anyone credit. Do you really want it to restart the current round and ignore the winner? If so, you have to change the post #10 code as follows.

 

Find this line of code towards the bottom of second_check:

 

Code:

plugin.ServerCommand("mapList.endRound", wid);
And change it to this:

 

Code:

plugin.ServerCommand("mapList.restartRound");
Finally, there's a couple of other places where you need to change !votenext to !voterestart, if you are really going to do that. There are chat messages that have to change.

 

Find this code in second_check:

 

Code:

if (firstTime) {
		msg = remain + " " + voters + " !surrender or " + otherVoters + " !votenext votes needed to end round with " + Convert.ToInt32(Math.Ceiling(timeout - since.TotalMinutes)) + " minutes left!";
	} else {
		msg = remain + " !surrender/!votenext needed to end round with " + Convert.ToInt32(Math.Ceiling(timeout - since.TotalMinutes)) + " mins left!";
	}
Find all the !votenext in that code and change to !voterestart. You can also remove the !surrender from those messages too if you want.
* Restored post. It could be that the author is no longer active.
Link to comment
  • Replies 306
  • Created
  • Last Reply

Originally Posted by Senshin*:

 

I think you made my day, I am going to check this out and going to change the script and later when finished I will post it.

I am running a No levolution server, that's why I call it voterestart, and it's just one map so, I think I keep it @ end round to finish the round probably, just name in different.

 

Thank you for your work. Your awesome and should continue this.

* Restored post. It could be that the author is no longer active.
Link to comment
  • 2 weeks later...

Originally Posted by Syrok*:

 

Hi Papa,

 

my !surrender option wont work, maybe i can ask for your help?

ive just installed insame limits, procon and insane are up2date.

 

''''''''''''''''''

Edit:

ok, iam stupid, i set both options to Code then first to expression ... xDD

 

Thanks!

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

Originally Posted by PapaCharlie9*:

 

Hey Papa, how can i initiate a yell msg when the minTicketGap is reached? :smile:

You didn't say ...

 

1) which limit/post # you are using, I'll assume post #1.

 

2) whether you want the yell to be only to the person typing in the vote command or to everyone, I assume just to the person typing in the command

 

3) what you want to yell, I'll assume the same message sent to the player in chat

 

Based on all those assumptions, find this code in post #1:

 

Code:

double t1 = server.RemainTickets(1);
double t2 = server.RemainTickets(2);
if (Math.Abs(t1 - t2) < minTicketGap) {
    msg = "Ticket counts too close to hold a vote!";
    ChatPlayer(player.Name);
    return false;
}
Add the line in red:

 

Code:

double t1 = server.RemainTickets(1);
double t2 = server.RemainTickets(2);
if (Math.Abs(t1 - t2) < minTicketGap) {
    msg = "Ticket counts too close to hold a vote!";
    ChatPlayer(player.Name);
    plugin.SendPlayerYell(player.Name, msg, 10);
    return false;
}
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by TMiland*:

 

You didn't say ...

 

1) which limit/post # you are using, I'll assume post #1.

 

2) whether you want the yell to be only to the person typing in the vote command or to everyone, I assume just to the person typing in the command

 

3) what you want to yell, I'll assume the same message sent to the player in chat

 

Based on all those assumptions, find this code in post #1:

 

Code:

double t1 = server.RemainTickets(1);
double t2 = server.RemainTickets(2);
if (Math.Abs(t1 - t2) < minTicketGap) {
    msg = "Ticket counts too close to hold a vote!";
    ChatPlayer(player.Name);
    return false;
}
Add the line in red:

 

Code:

double t1 = server.RemainTickets(1);
double t2 = server.RemainTickets(2);
if (Math.Abs(t1 - t2) < minTicketGap) {
    msg = "Ticket counts too close to hold a vote!";
    ChatPlayer(player.Name);
    plugin.SendPlayerYell(player.Name, msg, 10);
    return false;
}
Well, i see that i didn't explain how i wanted this, but i was thinking to notify the loosing/baseraped team to initiate a vote when the minTicketGap is reached, or if you have any better ideas, it would be much appreciated. :smile:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Well, i see that i didn't explain how i wanted this, but i was thinking to notify the loosing/baseraped team to initiate a vote when the minTicketGap is reached, or if you have any better ideas, it would be much appreciated. :smile:

The minTicketGap prevents voting from happening. So the yell would be that votes can no longer be made because tickets are only 50 or less apart. Is that what you meant? That would take a whole new limit.

 

If instead you mean a yell that happens when a maximum ticket gap is reached, like to encourage voting to end the round if tickets are more than 300 apart, that also would require a completely new limit.

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

Originally Posted by TMiland*:

 

If instead you mean a yell that happens when a maximum ticket gap is reached, like to encourage voting to end the round if tickets are more than 300 apart, that also would require a completely new limit.

Yeah, thats what i mean, instead of spamming the messages all the time, it would be better to yell it once if one team is beeing baseraped. :smile:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Yeah, thats what i mean, instead of spamming the messages all the time, it would be better to yell it once if one team is beeing baseraped. :smile:

Create a limit to evaluate OnSpawn, call it "Yell Vote Reminder", leave Action set to None.

 

Set first_check to this Expression:

 

Code:

(Math.Abs(team1.RemainTickets - team2.RemainTickets) > 300)
You can change 300 to whatever you want the maximum gap to be.

 

Set second_check to this code:

 

Code:

if (limit.Activations() > 1) return false; // Only send yell once

String msg = "Type !votenext to end this round now"; // CHANGE
plugin.SendGlobalYell(msg, 10);
plugin.SendGlobalMessage(msg);
plugin.PRoConChat("ADMIN > " + msg);
return false;
This will only yell the message once per round, even if the gap closes (gets smaller) and then goes over the max again. You can change the text of the message by changing the line that ends with // CHANGE. The 10 is the number of seconds the yell is displayed, you can change that too if you want.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by TMiland*:

 

Create a limit to evaluate OnSpawn, call it "Yell Vote Reminder", leave Action set to None.

 

Set first_check to this Expression:

 

Code:

(Math.Abs(team1.RemainTickets - team2.RemainTickets) > 300)
You can change 300 to whatever you want the maximum gap to be.

 

Set second_check to this code:

 

Code:

if (limit.Activations() > 1) return false; // Only send yell once

String msg = "Type !votenext to end this round now"; // CHANGE
plugin.SendGlobalYell(msg, 10);
plugin.SendGlobalMessage(msg);
plugin.PRoConChat("ADMIN > " + msg);
return false;
This will only yell the message once per round, even if the gap closes (gets smaller) and then goes over the max again. You can change the text of the message by changing the line that ends with // CHANGE. The 10 is the number of seconds the yell is displayed, you can change that too if you want.
Thank you PapaCharlie9! :biggrin:

 

Will this encourage players to maybe vote even though they aren't baseraped? I am using the nuke version of the script, and it would be wrong if the loosing team was voting to nuke the winning team if they where not being baseraped. :P

 

I have also added a autoresponder, that yells if someone writes "baserape" or "base rape" in chat.

 

https://github.com/tmiland/ProconLim...toResponder.cs

Maybe that is a better way of handling this?

 

What's your opinion on this Papa? :smile:

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

Originally Posted by PapaCharlie9*:

 

Thank you PapaCharlie9! :biggrin:

 

Will this encourage players to maybe vote even though they aren't baseraped? I am using the nuke version of the script, and it would be wrong if the loosing team was voting to nuke the winning team if they where not being baseraped. :P

Oh, you aren't using the !surrender version? That does change things. I wouldn't use the yell if all players can do is !votecamp to nuke.

 

I have also added a autoresponder, that yells if someone writes "baserape" or "base rape" in chat.

 

https://github.com/tmiland/ProconLim...toResponder.cs

Maybe that is a better way of handling this?

 

What's your opinion on this Papa? :smile:

That auto responder might be all you need, though I would change the Regex.Match pattern to:

 

@"(_:base\s*rape|raping|camping)"

 

Players sometimes type "camping" rather than "raping". And base\s*rape already includes "baserape".

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

Originally Posted by TMiland*:

 

Oh, you aren't using the !surrender version? That does change things. I wouldn't use the yell if all players can do is !votecamp to nuke.

 

 

That auto responder might be all you need, though I would change the Regex.Match pattern to:

 

@"(_:base\s*rape|raping|camping)"

 

Players sometimes type "camping" rather than "raping". And base\s*rape already includes "baserape".

Thanks for pointing that out!

 

Will that regex just match basecamping and base camping, baseraping and base raping, basecamping and base camping?

Or will it trigger on just camping and raping? :P

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

Originally Posted by PapaCharlie9*:

 

Thanks for pointing that out!

 

Will that regex just match basecamping and base camping, baseraping and base raping, basecamping and base camping?

Or will it trigger on just camping and raping? :P

All of the above. I've seen people type just "camping" and just "raping" or "rape" when they mean base camping and base raping. Of course, they also type those words for random other reasons.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by TMiland*:

 

All of the above. I've seen people type just "camping" and just "raping" or "rape" when they mean base camping and base raping. Of course, they also type those words for random other reasons.

Okay, then i'll remove camping, since i don't want it to be yelled all the time. :smile:
* Restored post. It could be that the author is no longer active.
Link to comment
  • 4 weeks later...

Originally Posted by EdgarAllan*:

 

Give this a try. Let me know if there are any compilation errors. Follow the steps in post #1, but use this code for second_check instead of the code in post #1.

 

Changes:

 

* !surrender or !votenext instead of !votecamp, as in vote to go to the next round -- losing team would use !surrender, winning team would use !votenext, though in truth, either team could use either command, they both do the same thing

 

* ends the round with the leading team getting the win

 

* either team may vote, not limited to the losing team

...

As instructed, I am putting my post in this thread....

 

New Request: Admin Yell/Chat message upon certain ticket percentage remaining

 

Hello, I'm looking for a script that will perform an admin yell and admin chat to all players when one team has 50% (or any configurable percentage) that the opposing team does (ie: 350 vs 700 tickets). The yell/chat should also not occur if the total tickets in the game/on a team are below a certain configurable percentage (20% for example).

 

I want to use this as a way to inform players in a completely lopsided Conquest game that they can utilize the !surrender command (created by PapaCharlie on one of the first pages of the thread).

 

It would probably even be more awesome if there is a minimum ticket gap size before the message would be enabled as well.

 

This might also be something that could be added onto the current !surrender limit.

 

Thanks for any help guys.

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

Originally Posted by PapaCharlie9*:

 

New Request: Admin Yell/Chat message upon certain ticket percentage remaining

I'll provide a way to limit the messages sent per round, so that if the gap bounces above and below the threshold during the round, you'll only see the message X times. I also sent the message only to the losing team. If you want it to go to all, change the SendTeamXXX functions to SendGlobalXXX functions and remove the team id parameter.

 

The ticket ratio is expressed as a percentile of the leading team's tickets over the losing team's tickets, with "200" meaning the leading team has twice as many tickets as the losing team. Must be greater than 100.

 

Create a limit to evaluate OnSpawn, call it "Gap Warning". If this is a small server with a relatively low kill/spawn rate, use OnIntervalServer set to 15 seconds instead.

 

This limit works for simple count-down modes only (Conquest, Domination). Won't work for TDM or Rush.

 

Set first_check to this Code:

 

Code:

/* SETTINGS */

double ticketRatio = 200; // Percentage of larger over smaller, must be more than 100 // CHANGE
int maxMessages = 3; // CHANGE
String warning = "{0} team, you are {1} tickets behind, use !surrender to end the round now!"; // CHANGE
// {0} is the losing team faction, {1} is the gap in tickets

/* CODE */

double t1 = Math.Max(1, server.RemainTickets(1));
double t2 = Math.Max(1, server.RemainTickets(2));
int leader = (t1 > t2) _ 1 : 2;
int trailer = (t1 > t2) _ 2 : 1;
double ratio = (t1 > t2) _ (t1/t2) : (t2/t1);

if (ratio * 100 < ticketRatio)
    return false;

int count = 0;
String key = "GapWarning";
if (plugin.RoundData.issetInt(key))
    count = plugin.RoundData.getInt(key);
if (count >= maxMessages)
    return false;

double diff = Math.Abs(t1 - t2);

String[] factionName = new String[]{"US", "RU", "CN"};
int faction = server.GetFaction(trailer);
String teamName = (faction >= 0 && faction <= 2) _ factionName[faction] : "__";
String msg = String.Format(warning, teamName, diff.ToString("F0"));

plugin.SendTeamMessage(trailer, msg);
plugin.SendTeamYell(trailer, msg, 12);
plugin.PRoConChat("ADMIN > Gap Warning: " + msg);

count = count + 1;
plugin.RoundData.setInt(key, count);

return false;
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Hi, I was looking for a limit that would allow the players would be able to change the map with a chat buzzword @lag. Once every 0-2 days the server will start to rubberband, and followed up by a blaze dump. I would like to get the players their points, and hopefully the next map will run smoother...

Start with the limit in post #10 above, the !surrender version.

 

myrcon.net/...insane-limits-v09r6-vote-to-nuke-campingbase-raping-team-or-surrender#entry28837

 

Find this line of code:

 

Code:

Match nextMatch = Regex.Match(player.LastChat, @"^\s*[@!](_:surrender|vote\s*next)", RegexOptions.IgnoreCase);
And change it to this:

 

Code:

Match nextMatch = Regex.Match(player.LastChat, @"^\s*[@!](_:surrender|lag)", RegexOptions.IgnoreCase);
That allows either @lag or !surrender (or !lag or @surrender) to be used.

 

You then should go through the code and find any chat or yell messages that need updating, like:

 

Code:

msg = remain + " " + voters + " !surrender or " + otherVoters + " !votenext votes needed to end round with " + Convert.ToInt32(Math.Ceiling(timeout - since.TotalMinutes)) + " minutes left!";
You could change that to:

 

Code:

msg = remain + " " + voters + " @surrender or " + otherVoters + " @lag votes needed to end round with " + Convert.ToInt32(Math.Ceiling(timeout - since.TotalMinutes)) + " minutes left!";
The usually start with msg =.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Sorry*:

 

Thank you! Actually the !surrender function will come in handy also.

 

Start with the limit in post #10 above, the !surrender version.

 

myrcon.net/...insane-limits-v09r6-vote-to-nuke-campingbase-raping-team-or-surrender#entry28837

 

Find this line of code:

 

Code:

Match nextMatch = Regex.Match(player.LastChat, @"^\s*[@!](_:surrender|vote\s*next)", RegexOptions.IgnoreCase);
And change it to this:

 

Code:

Match nextMatch = Regex.Match(player.LastChat, @"^\s*[@!](_:surrender|lag)", RegexOptions.IgnoreCase);
That allows either @lag or !surrender (or !lag or @surrender) to be used.

 

You then should go through the code and find any chat or yell messages that need updating, like:

 

Code:

msg = remain + " " + voters + " !surrender or " + otherVoters + " !votenext votes needed to end round with " + Convert.ToInt32(Math.Ceiling(timeout - since.TotalMinutes)) + " minutes left!";
You could change that to:

 

Code:

msg = remain + " " + voters + " @surrender or " + otherVoters + " @lag votes needed to end round with " + Convert.ToInt32(Math.Ceiling(timeout - since.TotalMinutes)) + " minutes left!";
The usually start with msg =.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Alex-B*:

 

Hello, what could it be?

Code:

Thread(settings): ERROR: 1 error compiling Code
Thread(settings): ERROR: (CS1002, line: 27, column: 82):  ; expected
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Hello, what could it be?

Code:

Thread(settings): ERROR: 1 error compiling Code
Thread(settings): ERROR: (CS1002, line: 27, column: 82):  ; expected
Which version of which limit did you try? There are several in this thread. Be detailed and specific.
* Restored post. It could be that the author is no longer active.
Link to comment
  • 2 weeks later...

Originally Posted by Prakaza*:

 

I have a problems in this lines, what i must to do?

Plaguin version 0.9.16.0

Procon version 1.4.2.3.

 

battlefield4 - /* VERSION 0.9.15/R8 - surrender */

 

Thread(settings): ERROR: 1 error compiling Code

Thread(settings): ERROR: (CS1002, line: 27, column: 82): ; expected

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

Originally Posted by PapaCharlie9*:

 

I have a problems in this lines, what i must to do?

Plaguin version 0.9.16.0

Procon version 1.4.2.3.

 

battlefield4 - /* VERSION 0.9.15/R8 - surrender */

 

Thread(settings): ERROR: 1 error compiling Code

Thread(settings): ERROR: (CS1002, line: 27, column: 82): ; expected

Make sure first_check is set to Expression, not Code.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by CoVeX*:

 

Hi Guys,

 

i have a Problem, the R8 !votenuke doesn´t work on my bf4 server. Can anyone help me with how to?

 

1... step

2... step

3... step

4... step

 

i hope you know what i mean, sorry for my english but my german it better ;-)

 

PS: the Video doesn´t work in Germany about musik in this video :-(

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

Originally Posted by PapaCharlie9*:

 

Hi Guys,

 

i have a Problem, the R8 !votenuke doesn´t work on my bf4 server. Can anyone help me with how to?

 

1... step

2... step

3... step

4... step

 

i hope you know what i mean, sorry for my english but my german it better ;-)

 

PS: the Video doesn´t work in Germany about musik in this video :-(

Please explain exactly how it doesn't work or what exactly the problem is.

 

Did you go directly to YouTube for the video? I'm surprised that the music is copyright detected for Germany, but not US.

 

https://www.youtube.com/watch_v=TPUqIAx8UOk&hd=1

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

Originally Posted by EdgarAllan*:

 

PapaCharlie,

 

Is there any way we could set a ticket floor (expressed as a percentage of start ticket amount) so this doesn't trigger when the ticket count is something like 90 vs 45? Thanks

 

I'll provide a way to limit the messages sent per round, so that if the gap bounces above and below the threshold during the round, you'll only see the message X times. I also sent the message only to the losing team. If you want it to go to all, change the SendTeamXXX functions to SendGlobalXXX functions and remove the team id parameter.

 

The ticket ratio is expressed as a percentile of the leading team's tickets over the losing team's tickets, with "200" meaning the leading team has twice as many tickets as the losing team. Must be greater than 100.

 

Create a limit to evaluate OnSpawn, call it "Gap Warning". If this is a small server with a relatively low kill/spawn rate, use OnIntervalServer set to 15 seconds instead.

 

This limit works for simple count-down modes only (Conquest, Domination). Won't work for TDM or Rush.

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

Originally Posted by PapaCharlie9*:

 

impossible to play video

 

Capture.PNG

Yes, I am aware of that and do apologize for that. Apparently in some countries, YouTube treats the background music of the video as violating copyright. It plays fine in the US. It's not my video so there isn't much I can do about it, short of making a completely new video.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

PapaCharlie,

 

Is there any way we could set a ticket floor (expressed as a percentage of start ticket amount) so this doesn't trigger when the ticket count is something like 90 vs 45? Thanks

My bad! I reviewed the original request and you clearly asked for that feature to begin with.

 

Fortunately, it's easy to add. Just find these lines of code:

 

Code:

double t1 = Math.Max(1, server.RemainTickets(1));
double t2 = Math.Max(1, server.RemainTickets(2));
And add this immediately before:

 

Code:

double floorPercent = 20; // CHANGE
if (server.RemainTicketsPercent(1) <= floorPercent || server.RemainTicketsPercent(2) <= floorPercent)
    return false;
Oddly enough, this is an exception to the warning that the limit as a whole only works for count-down modes like Conquest. This particular change would work with any mode.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Blaze2014*:

 

Hey papa i try again!Can i change this code so i can vote single player and team__Blaze

 

 

/* VERSION 0.9.15/R1 */ double percent = 50; // CUSTOMIZE: of losing team that has to vote double timeout = 5.0; // CUSTOMIZE: number of minutes before vote times out int minPlayers = 16; // CUSTOMIZE: minimum players to enable vote double minTicketPercent = 0; // CUSTOMIZE: minimum ticket percentage remaining in the round double minTicketGap = 1; // CUSTOMIZE: minimum ticket gap between winning and losing teams String kCamp = "votecamp"; String kOncePrefix = "votecamp_once_"; String kVoteTime = "votecamp_time"; int level = 2; try { level = Convert.ToInt32(plugin.getPluginVarValue("debug_le vel")); } catch (Exception e) {} String msg = "empty"; Action ChatPlayer = delegate(String name) { // closure bound to String msg plugin.ServerCommand("admin.say", msg, "player", name); plugin.PRoConChat("ADMIN to " + name + " > *** " + msg); }; /* Parse the command */ Match campMatch = Regex.Match(player.LastChat, @"^\s*!votecamp", RegexOptions.IgnoreCase); /* Bail out if not a proper vote */ if (!campMatch.Success) return false; /* Bail out if round about to end */ if (server.RemainTicketsPercent(1) = 2) plugin.ConsoleWrite("^b[VoteCamp]^n " + player.FullName + " voted to stop camping"); msg = "You voted to stop the other team from camping your deployment"; ChatPlayer(player.Name); /* Tally the votes */ int votes = 0; List losers = (losing == 1) ? team1.players : team2.players; /* Bail out if too much time has past */ if (!server.RoundData.issetObject(kVoteTime)) { server.RoundData.setObject(kVoteTime, DateTime.Now); if (level >= 2) plugin.ConsoleWrite("^b[VoteCamp]^n vote timer started"); } DateTime started = (DateTime)server.RoundData.getObject(kVoteTime); TimeSpan since = DateTime.Now.Subtract(started); if (since.TotalMinutes > timeout) { msg = "The voting time has expired, the vote is cancelled!"; plugin.SendGlobalMessage(msg); plugin.SendGlobalYell(msg, 10); if (level >= 2) plugin.ConsoleWrite("^b[VoteCamp]^n vote timeout expired"); foreach (PlayerInfoInterface can in losers) { // Erase the vote if (can.RoundData.issetBool(kCamp)) can.RoundData.unsetBool(kCamp); } server.RoundData.unsetObject(kVoteTime); /* Losing team only gets to try this vote once per round */ server.RoundData.setBool(key, true); return false; } /* Otherwise tally */ foreach(PlayerInfoInterface p in losers) { if (p.RoundData.issetBool(kCamp)) votes++; } if (level >= 3) plugin.ConsoleWrite("^b[VoteCamp]^n loser votes = " + votes + " of " + losers.Count); int needed = Convert.ToInt32(Math.Ceiling((double) losers.Count * (percent/100.0))); int remain = needed - votes; if (level >= 3) plugin.ConsoleWrite("^b[VoteCamp]^n needed = " + needed); String campers = (losing == 1) ? "RU" : "US"; // BF3 String voters = (losing == 1) ? "US" : "RU"; // BF3 if (server.GameVersion == "BF3") { String[] factionNames = new String[]{"US", "RU", "CN"}; int f1 = (team1.Faction == -1 || team1.Faction > 2) ? 0 : team1.Faction; int f2 = (team2.Faction == -1 || team2.Faction > 2) ? 1 : team2.Faction; campers = (losing == 1) ? factionNames[f2] : factionNames[f1]; voters = (losing == 1) ? factionNames[f1] : factionNames[f2]; } if (remain > 0) { msg = remain + " " + voters + " votes needed to punish " + campers + " team! " + Convert.ToInt32(Math.Ceiling(timeout - since.TotalMinutes)) + " mins left to vote!"; plugin.SendGlobalMessage(msg); plugin.SendGlobalYell(msg, 8); if (level >= 2) plugin.ConsoleWrite("^b[VoteCamp]^n " + msg); return false; } /* Punish the campers */ msg = "Vote succeeded: " + campers + " team is being nuked for camping your deployment! Break out now!"; plugin.SendTeamMessage(losing, msg); plugin.SendGlobalMessage(msg, 15); if (level >= 2) plugin.ConsoleWrite("^b[VoteCamp]^n " + msg); List bad = (losing == 1) ? team2.players : team1.players; foreach (PlayerInfoInterface nuke in bad) { plugin.KillPlayer(nuke.Name, 1); if (level >= 3) plugin.ConsoleWrite("^b[VoteCamp]^n killing " + nuke.FullName); } /* Losing team only gets to do this once */ server.RoundData.setBool(key, true); return false;

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

Archived

This topic is now archived and is closed to further replies.




  • Our picks

    • Game Server Hosting:

      We're happy to announce that EZRCON will branch out into the game server provider scene. This is a big step for us so please having patience if something doesn't go right in this area. Now, what makes us different compared to other providers? Well, we're going with the idea of having a scaleable server hosting and providing more control in how you set up your server. For example, in Minecraft, you have the ability to control how many CPU cores you wish your server to have access to, how much RAM you want to use, how much disk space you want to use. This type of control can't be offered in a single service package so you're able to configure a custom package the way you want it.

      You can see all the available games here. Currently, we have the following games available.

      Valheim (From $1.50 USD)


      Rust (From $3.20 USD)


      Minecraft (Basic) (From $4.00 USD)


      Call of Duty 4X (From $7.00 USD)


      OpenTTD (From $4.00 USD)


      Squad (From $9.00 USD)


      Insurgency: Sandstorm (From $6.40 USD)


      Changes to US-East:

      Starting in January 2022, we will be moving to a different provider that has better support, better infrastructure, and better connectivity. We've noticed that the connection/routes to this location are not ideal and it's been hard getting support to correct this. Our contract for our two servers ends in March/April respectively. If you currently have servers in this location you will be migrated over to the new provider. We'll have more details when the time comes closer to January. The new location for this change will be based out of Atlanta, GA. If you have any questions/concerns please open a ticket and we'll do our best to answer them.
      • 5 replies
    • Hello All,

      I wanted to give an update to how EZRCON is doing. As of today we have 56 active customers using the services offered. I'm glad its doing so well and it hasn't been 1 year yet. To those that have services with EZRCON, I hope the service is doing well and if not please let us know so that we can improve it where possible. We've done quite a few changes behind the scenes to improve the performance hopefully. 

      We'll be launching a new location for hosting procon layers in either Los Angeles, USA or Chicago, IL. Still being decided on where the placement should be but these two locations are not set in stone yet. We would like to get feedback on where we should have a new location for hosting the Procon Layers, which you can do by replying to this topic. A poll will be created where people can vote on which location they would like to see.

      We're also looking for some suggestions on what else you would like to see for hosting provider options. So please let us know your thoughts on this matter.
      • 4 replies
    • Added ability to disable the new API check for player country info


      Updated GeoIP database file


      Removed usage sending stats


      Added EZRCON ad banner



      If you are upgrading then you may need to add these two lines to your existing installation in the file procon.cfg. To enable these options just change False to True.

      procon.private.options.UseGeoIpFileOnly False
      procon.private.options.BlockRssFeedNews False



       
      • 2 replies
    • 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

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

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