Jump to content

Insane Limits: Game of Tag, You're It, Knife kills


ImportBot

Recommended Posts

Originally Posted by PapaCharlie9*:

 

PC9,

 

This is an edit of post #2178 with new punishments added...

appears there was a little confusion, as I do not know how to use multiple quotes ...yet...

 

Thanks for "knife only" server code you did do. Will save it for future use.

 

""...This Code would be for BF3 GunMaster with a little SQDM and Scavenger played also ...""

 

_gp?

 

PapaCharlie9,

 

if you have some time

 

Had a thought for a new twist for GunMaster, make it a little harder and perhaps more interesting...(might work with other modes as well)...

 

I run and maintain -WalkInDead- GunMaster server. Would be able to give you what ever access to it you might need.

 

Not sure if this can be done with an Insane Limit or better as a stand alone plug-in.

In time I might be able to figure out how to code it, but do not think I would do it justice.

 

Main thought:

 

Anytime a player is killed by a knife, would need to get a knife kill before getting a kill with any other weapon...

 

 

Explanation:

 

When player is killed by a knife, he would be added to an 'IT' list.

 

Player would be given a YELL warning "You are 'IT'... You must get Knife Kill..."

 

Player would remain on 'IT' list until he got a Knife Kill...

 

If 'IT' player kills with any other weapon punishments would be ...

 

1st non knife kill would be admin killed with Yell warning message "You are 'IT'...knife kill needed"

2nd non knife kill would be admin killed with Yell warning "You are 'IT'...knife kill needed or be kicked"

3rd non knife kill would be round banned with message stating "You were 'IT'...knife kill was needed"

 

When 'IT' player gets knife kill, he would be removed from 'IT' list with Yell

"You are Free to Kill with All Weapons"

 

At end of Round 'IT' list would be reset...

 

Not sure what would be best way for this to be enabled , by vote or by admin in game...

My thinking is by admin in game, so it can be shut off again if needed...

 

The biggest draw back is this might turn server into a knife only server,

but I am sure there will be players still trying to win with all weapons...

 

_gp?

For the admin command, I'm going to assume that a custom list of player names is okay. The alternative is to use Procon accounts, but that's more code and might not be what you wanted anyway.

 

Create a custom list, call it gm_admins, Enabled, CaseInsensitive. Add all the admins that can control the mode as player names separated by commas.

 

This will require two limits.

 

Limit 1

 

This is for the admin commands.

 

!gameon - enables the you're it mode.

 

!gameoff - disables the you're it mode

 

!game - reports the current state of the game mode

 

Create a new limit to evaluate OnAnyChat, call it "Game of Tag Command".

 

Set first_check to this Code:

 

Code:

String key = "GameOfTag";
String msg = null;
if (Regex.Match(player.LastChat, @"^!gameon", RegexOptions.IgnoreCase).Success) {
    if (!plugin.isInList(player.Name, "gm_admins")) {
        plugin.SendPlayerMessage(player.Name, "You do not have permission to use that command!");
        return false;
    }
    plugin.RoundData.setBool(key, true);
    msg = "Game of tag enabled!";
    plugin.SendPlayerMessage(player.Name, msg);
    plugin.ConsoleWrite(msg + " by " + player.Name);
} else if (Regex.Match(player.LastChat, @"^!gameoff", RegexOptions.IgnoreCase).Success) {
    if (!plugin.isInList(player.Name, "gm_admins")) {
        plugin.SendPlayerMessage(player.Name, "You do not have permission to use that command!");
        return false;
    }
    plugin.RoundData.setBool(key, false);
    msg = "Game of tag disabled!";
    plugin.SendPlayerMessage(player.Name, msg);
    plugin.ConsoleWrite(msg + " by " + player.Name);
} else if (Regex.Match(player.LastChat, @"^!game", RegexOptions.IgnoreCase).Success) {
    if (!plugin.isInList(player.Name, "gm_admins")) {
        plugin.SendPlayerMessage(player.Name, "You do not have permission to use that command!");
        return false;
    }
    bool enabled = false;
    if (plugin.RoundData.issetBool(key))
        enabled = plugin.RoundData.getBool(key);
    plugin.SendPlayerMessage(player.Name, "Game of tag is " + ((enabled) _ "enabled!" : "disabled!"));
}
return false;
Limit 2

 

This handles the It player and warnings.

 

Create a limit to evaluate OnKill, call it "Game of Tag".

 

Set first_check to this Expression:

 

Code:

(true)
Set second_check to this Code:

 

Code:

String key = "GameOfTag";
String msg = null;

// Check if mode is enabled
bool enabled = false;
if (plugin.RoundData.issetBool(key))
    enabled = plugin.RoundData.getBool(key);
if (!enabled)
    return false;

// Check if a knife kill
bool knifeKill = (kill.Weapon == "Melee");

// If victim not IT and knife kill, make IT
// If killer is IT and knife kill, make not IT
// If killer is IT and NOT knife kill, warn/kick

if (!victim.RoundData.issetInt(key) && knifeKill) {
    // Victim is now IT!
    msg = "YOU ARE 'IT'! Your next kill MUST be a knife kill!";
    plugin.SendPlayerMessage(victim.Name, msg);
    plugin.SendPlayerYell(victim.Name, msg, 20);
    plugin.ConsoleWrite(victim.Name + ": " + msg);
    victim.RoundData.setInt(key, 0);
}

if (killer.RoundData.issetInt(key) && knifeKill) {
    // Killer is now NOT IT!
    msg = "NICE KNIFE KILL! You are free to kill with all weapons!";
    plugin.SendPlayerMessage(killer.Name, msg);
    plugin.SendPlayerYell(killer.Name, msg, 20);
    plugin.ConsoleWrite(killer.Name + ": " + msg);
    killer.RoundData.unsetInt(key);
}

if (killer.RoundData.issetInt(key) && !knifeKill) {
    // Killer is IT and did not make a knife kill
    int warnings = killer.RoundData.getInt(key);
    warnings = warnings + 1;
    killer.RoundData.setInt(key, warnings);
    if (warnings == 1) {
        msg = "You are 'IT' ... Your next kill MUST be a knife kill!";
        plugin.SendPlayerMessage(killer.Name, msg);
        plugin.SendPlayerYell(killer.Name, msg, 20);
    } else if (warnings == 2) {
        msg = "You are 'IT' ... Your next kill MUST be a knife kill OR BE KICKED!";
        plugin.SendPlayerMessage(killer.Name, msg);
        plugin.SendPlayerYell(killer.Name, msg, 20);
    } else if (warnings == 3) {
        msg = "FINAL WARNING ... Your next kill MUST be a knife kill OR BE KICKED!";
        plugin.SendPlayerMessage(killer.Name, msg);
        plugin.SendPlayerYell(killer.Name, msg, 20);
    } else if (warnings > 3) {
        msg = "for ignoring warnings: you were 'IT'... knife kill was needed";
        plugin.ConsoleWrite("Kicked " + killer.Name + " " + msg);
        plugin.EABanPlayerWithMessage(EABanType.Name, EABanDuration.Round, killer.Name, 0, msg);
    }
    return false;
}
return false;
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by _gp_*:

 

PC9,

 

trust you enjoyed your holiday...

 

thx for the quick response on this when you had time.

 

will be trying this out as soon as my server is mostly regulars and understand what is happening...

 

_gp?

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

Originally Posted by _gp_*:

 

PC9,

 

I did add one quick line to the code for limit 1:

added this line to the top, to remind me of commands.

 

Code:

//Commands !gameon  !gameoff  !game
All compiled with no errors while installing Limits

 

for some reason after installing the 2 limits and enabling in game, I could enable limit, but it did not appear to work. Switched to virtual mode and could see it was trying to work.

 

"""Restarted Layer, enabled in game, and is working as intended...""""

 

I might make a few change to penalty adding a kill to verbal warning, verbal warning only, may not be getting players attention...

 

want to run it as is for a few days before making any big changes to it, have to let players adapt to the ""new"" of this...

 

1 other question:

 

Is there a Limit as to how many limits Insane Limits can handle?

 

I am now running 25 limits in insane limits at the moment along with 13 plugins on procon layer..

 

I do not see any adverse affects with Insane limits or with procon itself or while using ingame admin commands...

 

Thx again

 

_gp?

PC9,

 

here are a the first code changes I have made, so far ( butchering your code as best I can)...

 

What I have found I needed and have changed Limit 2 ...

 

1) Limit 2 original code, IT was only activating on Knife take down, not slash kill.

 

solution: found and swiped your regex code for all knife kills from "Melee/Knife Death Shame Random" Limit

 

2)Limit 2 original code only used Warnings, felt Kill player every time was needed when getting gun kill while IT and add more warning kills before kicked..

 

solution:

added extra warnings, also added code to kill IT player when needed.

Killing player after 5 secs and made Yell warning 30 seconds, so it bleeds over into next Spawn.

changed last punish from round ban a "0" Time ban

 

LIMIT 2 rev _gp?

 

Code:

String key = "GameOfTag";
String msg = null;

// Check if mode is enabled
bool enabled = false;
if (plugin.RoundData.issetBool(key))
    enabled = plugin.RoundData.getBool(key);
if (!enabled)
    return false;

// Check if a knife kill 
bool knifeKill = Regex.Match(kill.Weapon, "(Melee|Knife)").Success;

// If victim not IT and knife kill, make IT
// If killer is IT and knife kill, make not IT
// If killer is IT and NOT knife kill, warn/kick

if (!victim.RoundData.issetInt(key) && knifeKill)
	{
    // Victim is now IT!
    msg = "YOU ARE 'IT'! Your next kill MUST be a knife kill!";
    plugin.SendPlayerMessage(victim.Name, msg);
    plugin.SendPlayerYell(victim.Name, msg, 30);
    plugin.ConsoleWrite(victim.Name + ": " + msg);
    victim.RoundData.setInt(key, 0);
	}

if (killer.RoundData.issetInt(key) && knifeKill)
	{
    // Killer is now NOT IT!
    msg = "NICE KNIFE KILL! You are free to kill with all weapons!";
    plugin.SendPlayerMessage(killer.Name, msg);
    plugin.SendPlayerYell(killer.Name, msg, 30);
    plugin.ConsoleWrite(killer.Name + ": " + msg);
    killer.RoundData.unsetInt(key);
	}

if (killer.RoundData.issetInt(key) && !knifeKill)
	{
    // Killer is IT and did not make a knife kill
    int warnings = killer.RoundData.getInt(key);
    warnings = warnings + 1;
    killer.RoundData.setInt(key, warnings);
    if (warnings == 1)
		{
         msg = "You are 'IT' ... Your next kill MUST be a knife kill!";
         plugin.SendPlayerMessage(killer.Name, msg);
         plugin.SendPlayerYell(killer.Name, msg, 30);
		 //plugin.KillPlayer(killer.Name, 5);
		 }
	else if (warnings >= 2 && warnings <=4)
		{
		msg = "You are 'IT' ... Your next kill MUST be a knife kill OR BE KILLED!";
		plugin.SendPlayerMessage(killer.Name, msg);
		plugin.SendPlayerYell(killer.Name, msg, 30);
		plugin.KillPlayer(killer.Name, 5);
		}
	
	else if (warnings > 4)
		{
        msg = "for ignoring warnings: you were 'IT'... knife kill was needed";
        plugin.ConsoleWrite("Kicked " + killer.Name + " " + msg);
        //plugin.EABanPlayerWithMessage(EABanType.Name, EABanDuration.Round, killer.Name, 0, msg);
		plugin.EABanPlayerWithMessage(EABanType.EA_GUID, EABanDuration.Temporary, killer.Name, 0, msg);
		}
    return false;
	}
return false;
when you have the time,

 

I think a 3rd Limit would help IT player be aware of needing a Knife Kill...

 

OnSpawn :

 

chat and yell warnings for IT player.

Yell warning to last 30 secs or so..

 

 

Thx

 

_gp?

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

Originally Posted by _gp_*:

 

PC9,

 

Made another Limit for this, so players can get rules, it is going cause allot of spam in chat until Players get used to TAG...

 

Player can get TAG Rules by typing:

 

!tag or !TAG or !Tag

 

Player is Limited to 2 requests.

 

make a new Limit:

 

name Tag_Rules

evaluate OnAnyChat

 

first_check Expression

 

Code:

player.LastChat.StartsWith("!Tag")||player.LastChat.StartsWith("!tag")||player.LastChat.StartsWith("!TAG")
second check Code

 

Code:

// Edit rules here
List<String> Rules = new List<String>();
Rules.Add("----- TAG RULES -----");
//Rules.Add(" Tag is Simple");
Rules.Add(" If you are Knife killed, you are IT");
Rules.Add(" If you are IT, you need a knife kill.");
Rules.Add("If you get a Gun Kill while IT, you will be auto killed.");
Rules.Add("After Knife Kill while IT, you are free to Gun Kill.");
// Try not to add more Rules.Add because it won't fit in the chat box.


if(limit.Activations(player.Name) <= 2)
    foreach(string Rule in Rules)
        plugin.SendGlobalMessage(Rule);

return false;
I guess I am still inspired by all your hard work pc9

 

thx again

 

_gp?

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

Originally Posted by PapaCharlie9*:

 

I guess I am still inspired by all your hard work pc9

 

thx again

 

_gp?

That's what I like to see!

 

But keep in mind that if you do a kill player, they can't see the Yell!

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

Originally Posted by _gp_*:

 

That's what I like to see!

 

But keep in mind that if you do a kill player, they can't see the Yell!

also, the new IT player can not see yell when first killed by knife,

 

but the yell is set to 30, so the YELL bleeds over into their next spawn... :ohmy:...

 

the only minor issue I see is when an IT player is killed by another player while being IT, his next spawn there is no reminder.

 

As I mentioned in post #4, I do need another OnSpawn Limit, for IT players so IT player gets another message and yell. (I do get to verbose, instead of getting to the point.)

 

It is beyond my grasp, at the moment as to how to carry variables over, not knowing which ones to carry over from limit to limit.

 

thx

 

_gp?

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

Originally Posted by PapaCharlie9*:

 

also, the new IT player can not see yell when first killed by knife,

 

but the yell is set to 30, so the YELL bleeds over into their next spawn... :ohmy:...

 

the only minor issue I see is when an IT player is killed by another player while being IT, his next spawn there is no reminder.

 

As I mentioned in post #4, I do need another OnSpawn Limit, for IT players so IT player gets another message and yell. (I do get to verbose, instead of getting to the point.)

 

It is beyond my grasp, at the moment as to how to carry variables over, not knowing which ones to carry over from limit to limit.

 

thx

 

_gp?

Yeah, sorry, missed that request. It's an easy one, though.

 

Create a limit to evaluate OnSpawn, call it "You are IT reminder".

 

Set first_check to this Code:

 

Code:

String key = "GameOfTag";
String msg = null;

// Check if mode is enabled
bool enabled = false;
if (plugin.RoundData.issetBool(key))
    enabled = plugin.RoundData.getBool(key);
if (!enabled)
    return false;

if (player.RoundData.issetInt(key)) {
    msg = "YOU ARE 'IT'! Your next kill MUST be a knife kill!";
    plugin.SendPlayerMessage(player.Name, msg);
    plugin.SendPlayerYell(player.Name, msg, 30);
}
return false;
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by _gp_*:

 

Yeah, sorry, missed that request. It's an easy one, though.

 

Create a limit to evaluate OnSpawn, call it "You are IT reminder".

 

Set first_check to this Code:

 

Code:

String key = "GameOfTag";
String msg = null;

// Check if mode is enabled
bool enabled = false;
if (plugin.RoundData.issetBool(key))
    enabled = plugin.RoundData.getBool(key);
if (!enabled)
    return false;

if (player.RoundData.issetInt(key)) {
    msg = "YOU ARE 'IT'! Your next kill MUST be a knife kill!";
    plugin.SendPlayerMessage(player.Name, msg);
    plugin.SendPlayerYell(player.Name, msg, 30);
}
return false;
thats an easy one he says :ohmy: , easy for you to say.

 

I believe you just showed me how to carry some variables over from limit to limit ..

 

"Thank You"

 

I will install this limit now and finish hacking oops I mean recoding limit 2 and get that posted shortly.

 

 

 

btw do you still bf3?

 

can add you to list so you can turn this on so you can see it in action...

 

I am getting some regulars asking to turn it on, also...overall most are liking this, but there is a language barrier at times.

 

thx

 

_gp?

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

Originally Posted by _gp_*:

 

thats an easy one he says :ohmy: , easy for you to say.

 

I believe you just showed me how to carry some variables over from limit to limit ..

 

"Thank You"

 

I will install this limit now and finish hacking oops I mean recoding limit 2 and get that posted shortly.

 

 

 

btw do you still bf3?

 

can add you to list so you can turn this on so you can see it in action...

 

I am getting some regulars asking to turn it on, also...overall most are liking this, but there is a language barrier at times.

 

thx

 

_gp?

think I meant redoing Limit 1

 

wanted rules to show in chat when this limit was ENABLED recoded to the following:

 

LIMIT 1 rev _gp_,

 

Code:

//Commands !gameon  !gameoff  !game
String key = "GameOfTag";
String msg = null;
if (Regex.Match(player.LastChat, @"^!gameon", RegexOptions.IgnoreCase).Success)
 {
    if (!plugin.isInList(player.Name, "gm_admins"))
	{
        plugin.SendPlayerMessage(player.Name, "You do not have permission to use that command!");
        return false;
    }
    plugin.RoundData.setBool(key, true);
    msg = "Game of tag enabled!";
    plugin.SendPlayerMessage(player.Name, msg);
    plugin.ConsoleWrite(msg + " by " + player.Name);
	
plugin.ServerCommand("admin.say", msg, "0");

List<String> Rules = new List<String>();
Rules.Add("----- TAG RULES -----");
Rules.Add(" If you are Knife killed, you are IT");
Rules.Add(" If you are IT, you need a knife kill.");
Rules.Add("If you get a Gun Kill while IT, you will be auto killed.");
Rules.Add("After Knife Kill while IT, you are free to Gun Kill.");

foreach(string Rule in Rules)
plugin.SendGlobalMessage(Rule);	
}
 else if (Regex.Match(player.LastChat, @"^!gameoff", RegexOptions.IgnoreCase).Success)
 {
    if (!plugin.isInList(player.Name, "gm_admins"))
	{
        plugin.SendPlayerMessage(player.Name, "You do not have permission to use that command!");
        return false;
    }
    plugin.RoundData.setBool(key, false);
    msg = "Game of tag disabled!";
    plugin.SendPlayerMessage(player.Name, msg);
    plugin.ConsoleWrite(msg + " by " + player.Name);
}
 else if (Regex.Match(player.LastChat, @"^!game", RegexOptions.IgnoreCase).Success)
 {
    if (!plugin.isInList(player.Name, "gm_admins"))
	{
        plugin.SendPlayerMessage(player.Name, "You do not have permission to use that command!");
        return false;
    }
    bool enabled = false;
    if (plugin.RoundData.issetBool(key))
        enabled = plugin.RoundData.getBool(key);
    plugin.SendPlayerMessage(player.Name, "Game of tag is " + ((enabled) _ "enabled!" : "disabled!"));
plugin.ServerCommand("admin.yell",  "Game of tag is " + ((enabled) _ "enabled!" : "disabled!"), "20");
}
return false;
>>>working on trying to get TAG rules announced anytime !game is used by an admin when TAG is already enabled... all I manage to do so far when I add similar code Lines 16-26 to the !game function Line 52 is cause my Procon Layer to Crash and Restart...

 

 

thx

_gp?

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

Originally Posted by _gp_*:

 

PC9,

 

reference post #10

 

I am finding that anytime I add code to the function "!ingame" which checks if TAG is on, I can turn TAG on, then if I check with !game my procon layer restarts.

 

I do not to want post the code, as others might use it in error.

 

thx,

 

_gp?

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

Originally Posted by _gp_*:

 

PC9,

 

reference post #10

 

I am finding that anytime I add code to the function "!ingame" which checks if TAG is on, I can turn TAG on, then if I check with !game my procon layer restarts.

 

I do not to want post the code, as others might use it in error.

 

thx,

 

_gp?

This is a rework of Limit 2

 

added a variable at Line 6, at beginning of code to be set for number of IT gunkills allowed before Kick. At the moment w =10, someday I hope to set it to 4 or so, once people understand TAG better..

 

Code:

//rework _gp_ 12152014

String key = "GameOfTag";
String msg = null;

int w = 0;

//set number of gunkills allowed when it before kick
w = 10;

// Check if mode is enabled
bool enabled = false;
if (plugin.RoundData.issetBool(key))
    enabled = plugin.RoundData.getBool(key);
if (!enabled)
    return false;

// Check if a knife kill 
bool knifeKill = Regex.Match(kill.Weapon, "(Melee|Knife)").Success;

// If victim not IT and knife kill, make IT
// If killer is IT and knife kill, make not IT
// If killer is IT and NOT knife kill, warn/kick

if (!victim.RoundData.issetInt(key) && knifeKill)
	{
    // Victim is now IT!
    msg = "YOU ARE 'IT'! Your next kill MUST be a knife kill!";
    plugin.SendPlayerMessage(victim.Name, msg);
    plugin.SendPlayerYell(victim.Name, msg, 30);
    plugin.ConsoleWrite(victim.Name + ": " + msg);
    victim.RoundData.setInt(key, 0);
	}

if (killer.RoundData.issetInt(key) && knifeKill)
	{
    // Killer is now NOT IT!
    msg = "NICE KNIFE KILL! You are free to kill with all weapons!";
    plugin.SendPlayerMessage(killer.Name, msg);
    plugin.SendPlayerYell(killer.Name, msg, 30);
    plugin.ConsoleWrite(killer.Name + ": " + msg);
    killer.RoundData.unsetInt(key);
	}

if (killer.RoundData.issetInt(key) && !knifeKill)
	{
    // Killer is IT and did not make a knife kill
    int warnings = killer.RoundData.getInt(key);
    warnings = warnings + 1;
    killer.RoundData.setInt(key, warnings);
    if (warnings == 1)
		{
         msg = "You are 'IT' ... Your next kill MUST be a knife kill!";
         plugin.SendPlayerMessage(killer.Name, msg);
         plugin.SendPlayerYell(killer.Name, msg, 30);
		 //plugin.KillPlayer(killer.Name, 0);
		 }
	else if (warnings >= 2 && warnings <= w)
		{
		msg = "You are 'IT' ... Your next kill MUST be a knife kill OR BE KILLED!";
		plugin.SendPlayerMessage(killer.Name, msg);
		plugin.SendPlayerYell(killer.Name, msg, 30);
		plugin.KillPlayer(killer.Name, 0);
		}
	
	else if (warnings > w)
		{
        msg = "for ignoring warnings: you were 'IT'... knife kill was needed";
        plugin.ConsoleWrite("Kicked " + killer.Name + " " + msg);
        //plugin.EABanPlayerWithMessage(EABanType.Name, EABanDuration.Round, killer.Name, 0, msg);
		plugin.EABanPlayerWithMessage(EABanType.EA_GUID, EABanDuration.Temporary, killer.Name, 0, msg);
		}
    return false;
	}
return false;
[/code}//rework _gp_ 12152014

String key = "GameOfTag";
String msg = null;

int w = 0;

//set number of gunkills allowed when it before kick
w = 10;

// Check if mode is enabled
bool enabled = false;
if (plugin.RoundData.issetBool(key))
    enabled = plugin.RoundData.getBool(key);
if (!enabled)
    return false;

// Check if a knife kill 
bool knifeKill = Regex.Match(kill.Weapon, "(Melee|Knife)").Success;

// If victim not IT and knife kill, make IT
// If killer is IT and knife kill, make not IT
// If killer is IT and NOT knife kill, warn/kick

if (!victim.RoundData.issetInt(key) && knifeKill)
	{
    // Victim is now IT!
    msg = "YOU ARE 'IT'! Your next kill MUST be a knife kill!";
    plugin.SendPlayerMessage(victim.Name, msg);
    plugin.SendPlayerYell(victim.Name, msg, 30);
    plugin.ConsoleWrite(victim.Name + ": " + msg);
    victim.RoundData.setInt(key, 0);
	}

if (killer.RoundData.issetInt(key) && knifeKill)
	{
    // Killer is now NOT IT!
    msg = "NICE KNIFE KILL! You are free to kill with all weapons!";
    plugin.SendPlayerMessage(killer.Name, msg);
    plugin.SendPlayerYell(killer.Name, msg, 30);
    plugin.ConsoleWrite(killer.Name + ": " + msg);
    killer.RoundData.unsetInt(key);
	}

if (killer.RoundData.issetInt(key) && !knifeKill)
	{
    // Killer is IT and did not make a knife kill
    int warnings = killer.RoundData.getInt(key);
    warnings = warnings + 1;
    killer.RoundData.setInt(key, warnings);
    if (warnings == 1)
		{
         msg = "You are 'IT' ... Your next kill MUST be a knife kill!";
         plugin.SendPlayerMessage(killer.Name, msg);
         plugin.SendPlayerYell(killer.Name, msg, 30);
		 //plugin.KillPlayer(killer.Name, 0);
		 }
	else if (warnings >= 2 && warnings <= w)
		{
		msg = "You are 'IT' ... Your next kill MUST be a knife kill OR BE KILLED!";
		plugin.SendPlayerMessage(killer.Name, msg);
		plugin.SendPlayerYell(killer.Name, msg, 30);
		plugin.KillPlayer(killer.Name, 0);
		}
	
	else if (warnings > w)
		{
        msg = "for ignoring warnings: you were 'IT'... knife kill was needed";
        plugin.ConsoleWrite("Kicked " + killer.Name + " " + msg);
        //plugin.EABanPlayerWithMessage(EABanType.Name, EABanDuration.Round, killer.Name, 0, msg);
		plugin.EABanPlayerWithMessage(EABanType.EA_GUID, EABanDuration.Temporary, killer.Name, 0, msg);
		}
    return false;
	}
return false;
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by _gp_*:

 

A New Limit for TAG this Limit turns TAG on a random bassis at beginning of a round. TAG is fun and a nice change of pace, but not want to play it every time.

 

 

LIMIT 5

 

name TAG_Rnd_On_Off

 

first check expression

 

set to (true)

 

2nd check code

 

Code:

//TAG_Rnd_On_Off 12152014

String key = "GameOfTag";
String msg = null;

Random rnd = new Random();
int TagOnOff = rnd.Next(9);

//change number here at moment it is 4 Tag should be played less than half the time

if(TagOnOff <= 4)
	{
	plugin.RoundData.setBool(key, true);
	msg = "Game of tag is enabled";
	plugin.ServerCommand("admin.say",  msg, "20");
	plugin.ServerCommand("admin.yell", msg, "20");
	
	List<String> Rules = new List<String>();
	Rules.Add("----- TAG RULES -----");
	Rules.Add(" If you are Knife killed, you are IT");
	Rules.Add(" If you are IT, you need a knife kill.");
	Rules.Add("If you get a Gun Kill while IT, you will be auto killed.");
	Rules.Add("After Knife Kill while IT, you are free to Gun Kill.");
	foreach(string Rule in Rules)
		plugin.SendGlobalMessage(Rule);	
	}
else
	{
	plugin.RoundData.setBool(key, false);
	msg = "Game of tag is disabled";
	plugin.ServerCommand("admin.say",  msg, "20");
	plugin.ServerCommand("admin.yell", msg, "20");
	}
return false;
thx,

 

_gp?

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

Originally Posted by PapaCharlie9*:

 

If you make the KillPlayer delay longer than 0, they can see the Yell. Like make it 5 seconds.

 

Code:

plugin.SendPlayerMessage(killer.Name, msg);
		plugin.SendPlayerYell(killer.Name, msg, 30);
		plugin.KillPlayer(killer.Name, 5);
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by _gp_*:

 

If you make the KillPlayer delay longer than 0, they can see the Yell. Like make it 5 seconds.

 

Code:

plugin.SendPlayerMessage(killer.Name, msg);
		plugin.SendPlayerYell(killer.Name, msg, 30);
		plugin.KillPlayer(killer.Name, 5);
I had it set for 5 seconds at first, players started questioning the delayed admin kill, not realizing admin kill was for IT gunkill.

 

With the addition of the You Are IT Reminder LIMIT, player better know they are IT :smile:

 

thx

_gp?

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

Originally Posted by _gp_*:

 

A New Limit for TAG this Limit turns TAG on a random bassis at beginning of a round. TAG is fun and a nice change of pace, but not want to play it every time.

 

 

LIMIT 5

 

name TAG_Rnd_On_Off

 

first check expression

 

set to (true)

 

2nd check code

 

Code:

//TAG_Rnd_On_Off 12152014

String key = "GameOfTag";
String msg = null;

Random rnd = new Random();
int TagOnOff = rnd.Next(9);

//change number here at moment it is 4 Tag should be played less than half the time

if(TagOnOff <= 4)
	{
	plugin.RoundData.setBool(key, true);
	msg = "Game of tag is enabled";
	plugin.ServerCommand("admin.say",  msg, "20");
	plugin.ServerCommand("admin.yell", msg, "20");
	
	List<String> Rules = new List<String>();
	Rules.Add("----- TAG RULES -----");
	Rules.Add(" If you are Knife killed, you are IT");
	Rules.Add(" If you are IT, you need a knife kill.");
	Rules.Add("If you get a Gun Kill while IT, you will be auto killed.");
	Rules.Add("After Knife Kill while IT, you are free to Gun Kill.");
	foreach(string Rule in Rules)
		plugin.SendGlobalMessage(Rule);	
	}
else
	{
	plugin.RoundData.setBool(key, false);
	msg = "Game of tag is disabled";
	plugin.ServerCommand("admin.say",  msg, "20");
	plugin.ServerCommand("admin.yell", msg, "20");
	}
return false;
thx,

 

_gp?

I changed this by setting first expression from (true) to

 

Code:

(server.PlayerCount >= 12 )
finding it is better to have minimum number of players before tag is started.

 

thx

 

_gp?

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

Originally Posted by _gp_*:

 

PapaCharlie9,

 

I changed LIMIT 5 so that TAG is only enabled if there is more than 12 players in server as noted in post #16.

 

Thinking on Limiting TAG to only the smaller CQ maps or just CQ GM maps along with the minimum of 12 players.

 

 

 

Is there an easier way than calling each map name and mode with an || ?

 

Also I can not find the correct map names, thought there was a post that had a complete list of map names?

 

 

thx for your time as always.

 

_gp?

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

Originally Posted by PapaCharlie9*:

 

PapaCharlie9,

 

I changed LIMIT 5 so that TAG is only enabled if there is more than 12 players in server as noted in post #16.

 

Thinking on Limiting TAG to only the smaller CQ maps or just CQ GM maps along with the minimum of 12 players.

 

 

 

Is there an easier way than calling each map name and mode with an || ?

 

Also I can not find the correct map names, thought there was a post that had a complete list of map names?

 

 

thx for your time as always.

 

_gp?

What do you mean by smaller CQ maps? Do you mean the Conquest Small mode as a whole, or only specific maps?

 

If you just meant the modes, make first_check be this:

 

Code:

(server.Gamemode == "ConquestSmall0" || server.Gamemode == "GunMaster0")
There is also ConquestAssaultSmall0 and ConquestAssaultSmall1, not sure if you care about those though.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by _gp_*:

 

What do you mean by smaller CQ maps? Do you mean the Conquest Small mode as a whole, or only specific maps?

 

If you just meant the modes, make first_check be this:

 

Code:

(server.Gamemode == "ConquestSmall0" || server.Gamemode == "GunMaster0")
There is also ConquestAssaultSmall0 and ConquestAssaultSmall1, not sure if you care about those though.
PC9,

 

excuse me for a moment or 2 while I laugh at myself.

 

I tend to forget there are other maps and modes, I have been hosting GM maps exclusively since the release of CloseQuarters(CQ) and added AfterMath(AM) when that was released.

 

I myself played SQDM only at the end of BF2 and played SQDM only when BC2 came out. BF3 had been no Vehicle SQDM for the most part until GM came out.

 

Anyways, the laughing moment has passed :smile: ...

 

-WalkInDead- is a HC GunMaster prefered server, runs 3 different malplists, based on the number of players.

The server starts out with a maplist of GM CloseQuarter(CQ) maps adding the larger AfterMath(AM) maps including Scavenger as the server fills.

CQ SQDM maps are dispersed through out the maplists, being used to break up the teams. I do not use the Multi-Balancer Unstacker as I feel that SQDM is a more suttle way.

 

(I do wish that Swamp Flys Seeder Balancer balanced idlers in SQDM also)

 

I am slowly whittling down as to where and when TAG will start up on its own, still leaving the option for gm_admins to turn it off/on.

 

Think at this phase the code you gave (server.Gamemode == "GunMaster0") will suffice along with the minimum players needed.

 

In time I may reduce it down to just the CQ GM maps, but think TAG works well with all GM maps.

 

so for LIMIT 5 the correct syntax in the first expression to check map is GM and minimum players of 12 would be

 

Code:

(server.Gamemode == "GunMaster0" && server.PlayerCount >= 12 )
sorry for any confusion earlier

 

thx again

 

_gp?

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

Originally Posted by PapaCharlie9*:

 

You get players to stick around through an SQDM mode change? That is simply amazing. Every time we tried to mix SQDM, or even Rush for that matter, into a Conquest rotation, everyone would leave. I dunno, maybe GM players have a different mindset. Whatever, kudos for the unique rotation. If I didn't hate GM so much I might play on your server! I love SQDM, Infantry Only.

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

Originally Posted by OLDREDHACKSAW*:

 

Good Morning Peoples.

 

Regarding conquest mode. Having god knows how many conquest wins on my stats, and the fact I love playing large vehicle maps, playing conquest for the more hardened player, feels like a repeat?

 

A few years ago, I joined the Brothers of Warfare Clan (Bow), and we currently run a knife only server and are running some of the most efficient code i have ever seen. When I repost the code, I'll do my best to recognize all the authors I abused :sad:

 

Anyways I cant find a multi kill announcer, that I wish to activate only after (3 or more kills, & Player doing killing finally dies).

 

P.S. Stay cool :smile:

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

Originally Posted by _gp_*:

 

You get players to stick around through an SQDM mode change? That is simply amazing. Every time we tried to mix SQDM, or even Rush for that matter, into a Conquest rotation, everyone would leave. I dunno, maybe GM players have a different mindset. Whatever, kudos for the unique rotation. If I didn't hate GM so much I might play on your server! I love SQDM, Infantry Only.

PapaCharlie9,

 

it is almost surprising, that there are times, running a SQDM map will fill the server when running GM will not.

 

If you like we can set up, a time to play. I am usually up late here, which would be early morning for you, I can set up a maplist running more CQ SQDM maps and have you as VIP or Admin so your vote would count as 3 in Vote Map plug in.

 

Never know HC GM might grow on you :ohmy:

 

Thx

 

_gp?

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

Originally Posted by _gp_*:

 

Good Morning Peoples.

 

Regarding conquest mode. Having god knows how many conquest wins on my stats, and the fact I love playing large vehicle maps, playing conquest for the more hardened player, feels like a repeat?

 

A few years ago, I joined the Brothers of Warfare Clan (Bow), and we currently run a knife only server and are running some of the most efficient code i have ever seen. When I repost the code, I'll do my best to recognize all the authors I abused :sad:

 

Anyways I cant find a multi kill announcer, that I wish to activate only after (3 or more kills, & Player doing killing finally dies).

 

P.S. Stay cool :smile:

There is a LIMIT that was done, sounds close to what you might be looking for: UT Style Kill-Spree Messages

 

think you will find it over in : myrcon.net/.../insane-limits-requests

 

thx

 

_gp?

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

Originally Posted by _gp_*:

 

PC9,

 

Made another Limit for this, so players can get rules, it is going cause allot of spam in chat until Players get used to TAG...

 

Player can get TAG Rules by typing:

 

!tag or !TAG or !Tag

 

Player is Limited to 2 requests.

 

make a new Limit:

 

name Tag_Rules

evaluate OnAnyChat

 

first_check Expression

 

Code:

player.LastChat.StartsWith("!Tag")||player.LastChat.StartsWith("!tag")||player.LastChat.StartsWith("!TAG")
second check Code

 

Code:

// Edit rules here
List<String> Rules = new List<String>();
Rules.Add("----- TAG RULES -----");
//Rules.Add(" Tag is Simple");
Rules.Add(" If you are Knife killed, you are IT");
Rules.Add(" If you are IT, you need a knife kill.");
Rules.Add("If you get a Gun Kill while IT, you will be auto killed.");
Rules.Add("After Knife Kill while IT, you are free to Gun Kill.");
// Try not to add more Rules.Add because it won't fit in the chat box.


if(limit.Activations(player.Name) <= 2)
    foreach(string Rule in Rules)
        plugin.SendGlobalMessage(Rule);

return false;
I guess I am still inspired by all your hard work pc9

 

thx again

 

_gp?

I reworked this LIMIT for TAG rules, added Spanish !SpTag and Portugese !PTag to rules

 

name: Tag_Rules_Multi

 

set 1st to: expression

 

Code:

player.LastChat.StartsWith("!Tag")||player.LastChat.StartsWith("!tag")||player.LastChat.StartsWith("!TAG")||player.LastChat.StartsWith("!SpTag")||player.LastChat.StartsWith("!Sptag")||player.LastChat.StartsWith("!SpTAG")||player.LastChat.StartsWith("!PTag")||player.LastChat.StartsWith("!Ptag")||player.LastChat.StartsWith("!PTAG")
set 2nd to: code

 

Code:

//rev _gp_ 01022015 added Spanish and Portugese

if (player.LastChat.StartsWith("!Tag")||player.LastChat.StartsWith("!tag")||player.LastChat.StartsWith("!TAG"))
	{
	//English
	// Edit rules here
	List<String> Rules = new List<String>();
	Rules.Add("----- TAG RULES -----");
	//Rules.Add(" Tag is Simple");
	Rules.Add(" If you are Knife killed, you are IT");
	Rules.Add(" If you are IT, you need a knife kill.");
	Rules.Add("If you get a Gun Kill while IT, you will be auto killed.");
	Rules.Add("After Knife Kill while IT, you are free to Gun Kill.");
	// Try not to add more Rules.Add because it won't fit in the chat box.


	if(limit.Activations(player.Name) <= 2)
		foreach(string Rule in Rules)
			plugin.SendGlobalMessage(Rule);
	
	return false;
	}


else if (player.LastChat.StartsWith("!SpTag")||player.LastChat.StartsWith("!Sptag")||player.LastChat.StartsWith("!SpTAG"))
	{
	//Spanish
	// Edit rules here
	List<String> Rules = new List<String>();
	Rules.Add("----- TAG RULES -----");
	//Rules.Add("TAG es simple");
	Rules.Add("Si te matan con un cuchillo, entonces usted es el IT.");
	Rules.Add("Si usted es el IT, tienes que matar  con un cuchillo.");
	Rules.Add("Si matas  con una arma de fuego mientras eres el IT, usted va a morir .");
	Rules.Add("Despues de matar con un cuchillo, usted es libre de usar cualquier arma.");
	// Try not to add more Rules.Add because it won't fit in the chat box.


	if(limit.Activations(player.Name) <= 2)
		foreach(string Rule in Rules)
			plugin.SendGlobalMessage(Rule);
	
	return false;
	}
	
else if (player.LastChat.StartsWith("!PTag")||player.LastChat.StartsWith("!Ptag")||player.LastChat.StartsWith("!PTAG"))
	{
	//Portugese
	// Edit rules here
	List<String> Rules = new List<String>();
	Rules.Add("----- TAG RULES -----");
	//Rules.Add("TAG e simples");
	Rules.Add("se voce for morto com uma faca, então voce e o IT.");
	Rules.Add("Se voce e o IT, voce precisa matar alguem com a faca.");
	Rules.Add("Se voce matar com uma arma de fogo enquanto voce e o IT, voce morrere .");
	Rules.Add("Apos matar alguem com a faca, voce este livre para usar qualquer arma.");
	// Try not to add more Rules.Add because it won't fit in the chat box.


	if(limit.Activations(player.Name) <= 2)
		foreach(string Rule in Rules)
			plugin.SendGlobalMessage(Rule);
	
	return false;
	}

return false;
Looks like I may need to learn a little Regex. You can't make me, you can not make me, Skipper!!!

 

Regex for the first expression, as it is getting a little messy doing it the way I have, to make it work.

 

also would like to add German !GTag and perhaps Polish !_Tag but can not have accented letters as will not show in chat window and each rule needs to be as few words as possible to fit 4 rules into chat window.

 

thx

_gp?

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

Originally Posted by PapaCharlie9*:

 

Looks like I may need to learn a little Regex. You can't make me, you can not make me, Skipper!!!

 

Regex for the first expression, as it is getting a little messy doing it the way I have, to make it work.

 

_gp?

It's not that bad. Use http://regexpal.com to test.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by _gp_*:

 

"Not that bad" he says :smile:

 

PapaCharlie9,

 

I do have another thought, for a new LIMIT that would be related to TAG.

 

Would be stand alone from the GAME of TAG and would work in conjunction if TAG was enabled.

 

LIMIT 6

 

name: IT_at_Start

 

eval: OnRoundStart

 

first check: expression

 

Code:

//this might be player count only, might be fun all modes
(server.Gamemode == "GunMaster0" && server.PlayerCount >= 12 )
second check:

 

set Start_IT to enabled at random or by admin in list and can be enabled by admin always.

 

//I do not know all the code yet, to set all players IT at start, not sure how players would be seen in Procon if coming from an SQDM map to 2 team map.

 

work:

set all players as IT with Say and Yell warnings that they are IT

 

punishment would be admin kills until they got knife kill.

 

I do believe admin kills should be penalty enough, as it would be next to impossible to win match.

 

 

if the regular Game of Tag was enabled it would fit right in with this,

 

would need to revise the You_Are_IT_Reminder LIMIT for IT at START

 

 

thx,

 

_gp?

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

Originally Posted by _gp_*:

 

I feel myself slipping closer and closer to trying to learn 'REGEX' ...... no, no you can not make me skipper ... :smile: ...

 

 

 

A New Limit for TAG this Limit turns TAG on a random bassis at beginning of a round. TAG is fun and a nice change of pace, but not want to play it every time.

 

 

LIMIT 5

 

name TAG_Rnd_On_Off

 

first check expression

 

set to (true)

 

2nd check code

 

Code:

//TAG_Rnd_On_Off 12152014

String key = "GameOfTag";
String msg = null;

Random rnd = new Random();
int TagOnOff = rnd.Next(9);

//change number here at moment it is 4 Tag should be played less than half the time

if(TagOnOff <= 4)
	{
	plugin.RoundData.setBool(key, true);
	msg = "Game of tag is enabled";
	plugin.ServerCommand("admin.say",  msg, "20");
	plugin.ServerCommand("admin.yell", msg, "20");
	
	List<String> Rules = new List<String>();
	Rules.Add("----- TAG RULES -----");
	Rules.Add(" If you are Knife killed, you are IT");
	Rules.Add(" If you are IT, you need a knife kill.");
	Rules.Add("If you get a Gun Kill while IT, you will be auto killed.");
	Rules.Add("After Knife Kill while IT, you are free to Gun Kill.");
	foreach(string Rule in Rules)
		plugin.SendGlobalMessage(Rule);	
	}
else
	{
	plugin.RoundData.setBool(key, false);
	msg = "Game of tag is disabled";
	plugin.ServerCommand("admin.say",  msg, "20");
	plugin.ServerCommand("admin.yell", msg, "20");
	}
return false;
thx,

 

_gp?

Since starting to use TAG on WalkInDead have come to realize it works best on the smaller, Close Quarter maps.

 

So I have modified this LIMIT... (i feel REGEX creeping up on me)... to allow only Close Quarter GunMaster along with 1 Aftermath Map, Epie Center (aka: Shakey)...

 

all I did is modify the first check Expression.

 

First Check : Expression

 

Code:

(server.MapFileName== "XP2_Skybar")&&(server.Gamemode == "GunMaster0")||(server.MapFileName== "XP2_Office")&&(server.Gamemode == "GunMaster0")||(server.MapFileName== "XP2_Palace")&&(server.Gamemode == "GunMaster0")||(server.MapFileName== "XP2_Factory")&&(server.Gamemode == "GunMaster0")||(server.MapFileName== "XP4_Quake")&&(server.Gamemode == "GunMaster0")
been testing this today, it appears to be working.

TAG can still be turned on at anytime by an admin on the admin list.

 

thx

 

_gp?

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

Originally Posted by PapaCharlie9*:

 

First Check : Expression

 

Code:

(server.MapFileName== "XP2_Skybar")&&(server.Gamemode == "GunMaster0")||(server.MapFileName== "XP2_Office")&&(server.Gamemode == "GunMaster0")||(server.MapFileName== "XP2_Palace")&&(server.Gamemode == "GunMaster0")||(server.MapFileName== "XP2_Factory")&&(server.Gamemode == "GunMaster0")||(server.MapFileName== "XP4_Quake")&&(server.Gamemode == "GunMaster0")
That's the right idea, but it would be safer to write it like this:

 

Code:

(
(server.MapFileName== "XP2_Skybar" && server.Gamemode == "GunMaster0")
||(server.MapFileName== "XP2_Office" && server.Gamemode == "GunMaster0")
||(server.MapFileName== "XP2_Palace" && server.Gamemode == "GunMaster0")
||(server.MapFileName== "XP2_Factory" && server.Gamemode == "GunMaster0")
||(server.MapFileName== "XP4_Quake" && server.Gamemode == "GunMaster0")
)
Then the grouping is clearer and less error prone. Your original relies on operator precedence to get the pairing correct. This version groups by parentheses, which I personally think is clearer.

 

Now that it is written that way, a simplification becomes clearer. As long as one part of the && statement is always the same, as it is in this case, you can "refactor" by using boolean algebra. Boolean algebra follows the distributive property, so this is equivalent:

 

Code:

(
(server.Gamemode == "GunMaster0") &&
  (
  server.MapFileName== "XP2_Skybar" 
  || server.MapFileName== "XP2_Office" 
  || server.MapFileName== "XP2_Palace" 
  || server.MapFileName== "XP2_Factory" 
  || server.MapFileName== "XP4_Quake"
  )
)
Less writing, same result.

 

Now if you need to add a different mode, you can just tack on a pair like you already had before, like this:

 

Code:

...
)
||(server.MapFileName=="MP_001" && server.Gamemode == "Domination0")
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by _gp_*:

 

That's the right idea, but it would be safer to write it like this:

 

Code:

(
(server.MapFileName== "XP2_Skybar" && server.Gamemode == "GunMaster0")
||(server.MapFileName== "XP2_Office" && server.Gamemode == "GunMaster0")
||(server.MapFileName== "XP2_Palace" && server.Gamemode == "GunMaster0")
||(server.MapFileName== "XP2_Factory" && server.Gamemode == "GunMaster0")
||(server.MapFileName== "XP4_Quake" && server.Gamemode == "GunMaster0")
)
Then the grouping is clearer and less error prone. Your original relies on operator precedence to get the pairing correct. This version groups by parentheses, which I personally think is clearer.

 

Now that it is written that way, a simplification becomes clearer. As long as one part of the && statement is always the same, as it is in this case, you can "refactor" by using boolean algebra. Boolean algebra follows the distributive property, so this is equivalent:

 

Code:

(
(server.Gamemode == "GunMaster0") &&
  (
  server.MapFileName== "XP2_Skybar" 
  || server.MapFileName== "XP2_Office" 
  || server.MapFileName== "XP2_Palace" 
  || server.MapFileName== "XP2_Factory" 
  || server.MapFileName== "XP4_Quake"
  )
)
Less writing, same result.

 

Now if you need to add a different mode, you can just tack on a pair like you already had before, like this:

 

Code:

...
)
||(server.MapFileName=="MP_001" && server.Gamemode == "Domination0")
thank you PC9.

 

think I had started out trying your last version, but was trying to be to simple, to where code would compile but not work correctly. Also was at a I am 'tired' point just wanting to get expression to work.

 

'K.I.S.S.' is a much better approach, always.

 

Will get this installed, now...

 

thx

 

_gp?

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

Originally Posted by _gp_*:

 

PC9,

 

This is a start to making LIMIT 6, which was to be, every player IT at Start of round.

 

I added this code to LIMIT 5, to see if it would work and it does compile.

 

Code:

//make all players IT if TAG ebabled and rnd <= 2 
	if(TagOnOff <= 2)
		{
		List<PlayerInfoInterface> all = new List<PlayerInfoInterface>();
		all.AddRange(team1.players);
		all.AddRange(team2.players);
		all.AddRange(team3.players);
		all.AddRange(team4.players);


		foreach (PlayerInfoInterface p in all)
			{
			msg = "YOU ARE 'IT'! You MUST get a knife kill!";
			plugin.SendPlayerMessage(p.Name, msg);
			plugin.SendPlayerYell(p.Name, msg, 30);
			//plugin.ConsoleWrite(p.Name + ": " + msg);
			p.RoundData.setInt(key, 0);
			}
		}
So what LIMIT 5 looks like now, it does compile, just not sure it will work.

 

Code:

//TAG_Rnd_On_Off 12152014
//added  IT for ALL at start 01192015

String key = "GameOfTag";
String msg = null;

Random rnd = new Random();
int TagOnOff = rnd.Next(9);

if(TagOnOff <= 4)
	{
	plugin.RoundData.setBool(key, true);
	msg = "Game of tag is enabled";
	plugin.ServerCommand("admin.say",  msg, "20");
	plugin.ServerCommand("admin.yell", msg, "20");
	
	List<String> Rules = new List<String>();
	Rules.Add("----- TAG RULES -----");
	Rules.Add(" If you are Knife killed, you are IT");
	Rules.Add(" If you are IT, you need a knife kill.");
	Rules.Add("If you get a Gun Kill while IT, you will be auto killed.");
	Rules.Add("After Knife Kill while IT, you are free to Gun Kill.");
	foreach(string Rule in Rules)
		plugin.SendGlobalMessage(Rule);
		
//make all players IT if TAG ebabled and rnd <= 2 
	if(TagOnOff <= 2)
		{
		List<PlayerInfoInterface> all = new List<PlayerInfoInterface>();
		all.AddRange(team1.players);
		all.AddRange(team2.players);
		all.AddRange(team3.players);
		all.AddRange(team4.players);


		foreach (PlayerInfoInterface p in all)
			{
			msg = "YOU ARE 'IT'! You MUST get a knife kill!";
			plugin.SendPlayerMessage(p.Name, msg);
			plugin.SendPlayerYell(p.Name, msg, 30);
			//plugin.ConsoleWrite(p.Name + ": " + msg);
			p.RoundData.setInt(key, 0);
			}
		}
	}
else if(TagOnOff >= 5)
	{
	plugin.RoundData.setBool(key, false);
	msg = "Game of tag is disabled";
	plugin.ServerCommand("admin.say",  msg, "20");
	plugin.ServerCommand("admin.yell", msg, "20");
	}
return false;
Will test it later today

 

thx,

 

_gp?

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