Jump to content

Insane Limits Requests


ImportBot

Recommended Posts

Originally Posted by HexaCanon*:

 

Procon layer crashed - I mean that everything freezes, score, chat, amount of players, all actions in procon are being stoped, the only I can see these timeouts. I have layer running on remote server and even started another dedicated layer for insane limits, so I have 2 layers now, one running all the plugins, another only insane limits. On the second layer with insane limits i'm switching all limits to off except the announcement. It's working as it should for several rounds and after crash showing only timeouts, layer does not respond and everything freezes. To understand whats going on I run procon with this limit only on my pc and found that strange behavior. When I switch announcer limit off insane limits are working fine, when I switch announcer on - it always crash after several rounds, even having no other plugins enabled. Changing wait_timeout doesn't help - it just showing timeouts with specified amount of seconds.

it will be more helpful at least if you provide the error message and what IL version you are using.
* Restored post. It could be that the author is no longer active.
Link to comment
  • Replies 3.2k
  • Created
  • Last Reply

Originally Posted by PapaCharlie9*:

 

He already said he was running 9.3 and provided error messages in the earlier post.

 

blademaster, what are the other details of the limit code? What is it set to evaluate on? What is first_check and second_check, Expression? Code? If it easier to give a full screenshot of the the limit section, that's fine, just make sure everything is readable.

 

What is the setting for use_slow_weapon_stats?

 

You've done a good job isolating the issue, so I believe you when you say it's something about this limit and/or Insane Limits. I just can't see anything in that limit code that would cause a freeze. It would be helpful for debugging if you added this line of code after the plugin.ServerCommand:

 

Code:

plugin.ConsoleWrite("State: " + state + ", next: " + mapName + "/" + modeName);
Then send me the plugin.log (PM) when you have a freeze again.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by pharbehind*:

 

Papa, what about a limit to nag "try-hards", I'll define try-hard as a level 90+ AND using a gun with 50+ stars.

 

There are SO many players out there, afraid to step out of their comfort zones to challenge themselves, and rather focused on high KDR with "easy" weapons. I'd like to automate a message for them to encourage using a different weapon. A kick of course would be too extreme, but a yell message would be nice :smile:

 

Think this is possible?

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

Originally Posted by Singh400*:

 

Papa, what about a limit to nag "try-hards", I'll define try-hard as a level 90+ AND using a gun with 50+ stars.

 

There are SO many players out there, afraid to step out of their comfort zones to challenge themselves, and rather focused on high KDR with "easy" weapons. I'd like to automate a message for them to encourage using a different weapon. A kick of course would be too extreme, but a yell message would be nice :smile:

 

Think this is possible?

Code:
if ( killer.StatsError ) 
	{
		return false;
	}

BattlelogWeaponStatsInterface bws = killer.GetBattlelog(kill.Weapon);

if ( bws.Kills >= 5000 && player.Rank >= 90 ) 
	{
		// The yell code
	}

return false;
Set it to OnKill.

 

And you'll need to edit the code to make sure if only triggers a few times, and doesn't spam every time the killer gets a kill.

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

Originally Posted by Ike*:

 

And you'll need to edit the code to make sure if only triggers a few times, and doesn't spam every time the killer gets a kill.

Can I stress how important this line is, if you have it check battlelog every time they get a kill, its not going to end well :sad:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by QQStrat*:

 

Hello,

 

I am looking for someone that could write a plugin for procon that captures everyone's name currently on the server every hour. Hopefully written to a text file.

 

IF this is possible please let me know, I thought I would ask before I start looking into the code myself.

 

Thank you.

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

Originally Posted by PapaCharlie9*:

 

Can I stress how important this line is, if you have it check battlelog every time they get a kill, its not going to end well :sad:

Rest assured, Battlelog stats are only fetched once per player and cached in an Insane Limits internal data structure. It's safe to call killer.GetBattlelog() as much as you want.

 

Here's how to keep the spam down to 3 kills per weapon per round. Change RoundData to Data to make it 3 kills total instead of per round.

 

Code:

if ( killer.StatsError ) 
	{
		return false;
	}

String kPrefix = "TryHard_";

Match m = Regex.Match(kill.Weapon, @"/([^/]+)$");
String wn = kill.Weapon;
if (m.Success) wn = m.Groups[1].Value;

String key = kPrefix + killer.Name + wn;

int spams = 0;
if (plugin.RoundData.issetInt(key)) {
	spams = plugin.RoundData.getInt(key);
}

if (spams >= 3) return false;

BattlelogWeaponStatsInterface bws = killer.GetBattlelog(kill.Weapon);

if ( bws.Kills >= 5000 && player.Rank >= 90 ) 
	{
		plugin.ServerCommand("admin.yell", "your message goes here with weapon: " + wn, "15", "player", killer.Name);
		plugin.RoundData.setInt(key, spams+1);
	}

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

Originally Posted by PapaCharlie9*:

 

Hello,

 

I am looking for someone that could write a plugin for procon that captures everyone's name currently on the server every hour. Hopefully written to a text file.

 

IF this is possible please let me know, I thought I would ask before I start looking into the code myself.

 

Thank you.

Go to the following link and install Insane Limits 9.3.: www.phogue.net/forumvb/showth...-DEC-2012)-BF3*

 

If you have never used Insane Limits before, watch the video in that post to get an idea of how to set up a limit. Watch in 1080HD mode full screen for best detail. Do not create the Simple Rank Limit shown in the video. Instead you will use the code below. Make sure you set virtual_mode to False, as shown in the video.

 

Install this limit (it should be your limit #1):

 

Rather than hourly, may I suggest that you list players at the end of every round? I think you'll get better results that way. If you really want hourly, post a reply and I'll change the code to do hourly. The limit below lists players to a file at the end of every round.

 

Create a new limit to evaluate OnRoundOver (set limit_1_evaluation to OnRoundOver). Set limit_1_name to List Players. Leave limit_1_action set to None.

 

Set limit_1_first_check to Code and paste this code into limit_1_first_check_code:

 

Code:

/* Version 0.9/R2 */

String logName = plugin.R("Logs/%server_host%_%server_port%/") + "playerlist.log"; // CUSTOMIZE

List<PlayerInfoInterface> all = new List<PlayerInfoInterface>();
all.AddRange(team1.players);
all.AddRange(team2.players);
if (team3.players.Count > 0) all.AddRange(team3.players);
if (team4.players.Count > 0) all.AddRange(team4.players);

if (all.Count == 0) return false;

String dateTime = "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] =======================";

plugin.Log(logName, dateTime);

foreach (PlayerInfoInterface p in all) {
    plugin.Log(logName, p.Name);
}

plugin.ConsoleWrite("Listed " + all.Count + " players to " + logName + " on " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

return false;
That's all. As long as Procon is connected to your server, players will be listed to the file at the end of every round.

 

The file will be found in the procon/Logs/ip_port/ folder, where ip_port is the ip and port of your server, e.g., 192.88.115.7_47888. The name of the file is set to "playerlist.log", but you may customize it by finding "playerlist.log" in the code above and changing it to something else, like "players.txt" or "listplayers.txt" or whatever.

 

I only put the player name, not the player's tag (if any) in the log. If you want the tag as well, change p.Name to p.FullName in the code.

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

Originally Posted by PapaCharlie9*:

 

Hello, Yes I would like the once an hour that I can set because I need to document that time frame. I really appreciate this and will donate to you.

The version I did above posts the date and time of the end of round into the log, but whatever. If you really want hourly, make this change:

 

The code is the same. All that is different is the set-up:

 

Create a new limit to evaluate OnIntervalServer (set limit_1_evaluation to OnIntervalServer). Set limit_1_evaluation_interval to 3600 (that's 1 hour in seconds). Set limit_1_name to List Players. Leave limit_1_action set to None.

 

Set limit_1_first_check to Code and paste the code from the previous post into limit_1_first_check_code.

 

As before, the date and time will be posted into the log. If there are no players on the server at the time (once every hour) that the code checks, nothing is written into the log.

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

Originally Posted by pharbehind*:

 

Rest assured, Battlelog stats are only fetched once per player and cached in an Insane Limits internal data structure. It's safe to call killer.GetBattlelog() as much as you want.

 

Here's how to keep the spam down to 3 kills per weapon per round. Change RoundData to Data to make it 3 kills total instead of per round.

 

Code:

if ( killer.StatsError ) 
	{
		return false;
	}

String kPrefix = "TryHard_";

Match m = Regex.Match(kill.Weapon, @"/([^/]+)$");
String wn = kill.Weapon;
if (m.Success) wn = m.Groups[1].Value;

String key = kPrefix + killer.Name + wn;

int spams = 0;
if (plugin.RoundData.issetInt(key)) {
	spams = plugin.RoundData.getInt(key);
}

if (spams >= 3) return false;

BattlelogWeaponStatsInterface bws = killer.GetBattlelog(kill.Weapon);

if ( bws.Kills >= 5000 && player.Rank >= 90 ) 
	{
		plugin.ServerCommand("admin.yell", "your message goes here with weapon: " + wn, "15", "player", killer.Name);
		plugin.RoundData.setInt(key, spams+1);
	}

return false;
Thanks! So what is the first check? Even though I've been using insane limits, I still have no idea what else to do with this bit of code :smile: Is there not a first check? What about evaluation? OnKill?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by HexaCanon*:

 

Thanks! So what is the first check? Even though I've been using insane limits, I still have no idea what else to do with this bit of code :smile: Is there not a first check? What about evaluation? OnKill?

i dont see any limit.activations so i think it is the first check.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

i dont see any limit.activations so i think it is the first check.

That's correct. Singh400 had already described how to set up the limit, but I'll repeat it here.

 

Create a new limit to evaluate OnKill. Call it "Try Harder". Leave Action set to None.

 

Set first_check to this Code: ... (then paste in the code).

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

Originally Posted by QQStrat*:

 

The version I did above posts the date and time of the end of round into the log, but whatever. If you really want hourly, make this change:

 

The code is the same. All that is different is the set-up:

 

Create a new limit to evaluate OnIntervalServer (set limit_1_evaluation to OnIntervalServer). Set limit_1_evaluation_interval to 3600 (that's 1 hour in seconds). Set limit_1_name to List Players. Leave limit_1_action set to None.

 

Set limit_1_first_check to Code and paste the code from the previous post into limit_1_first_check_code.

 

As before, the date and time will be posted into the log. If there are no players on the server at the time (once every hour) that the code checks, nothing is written into the log.

Hey thanks,

 

last questions.

 

Is there a way to disable the tweets? (not sure what this is doing)

Is there a way to disable grabbing stats so I do not get the error messages since I am only using this for this one limit.

 

Thanks for your time.

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

Originally Posted by HexaCanon*:

 

Is there a way to disable the tweets? (not sure what this is doing)

the only limit you have does not use any tweet, where do you see them ?

 

also read this

When you accept the privacy policy the first time you enable Insane Limits, you are asked if it is okay for Insane Limits to send automatic built-in Tweeting of interesting events to micovery's Twitter stream:

 

http://twitter.com/InsaneLimits

 

You can disable automatic tweeting by setting use_custom_privacy_policy to True and then changing the privacy settings that are revealed. There are three of them, tweet_my_server_bans, tweet_my_server_kicks, and tweet_my_server_state.

 

Also, you only see that message if your debug_level is 3 or higher. If you don't want to see it anymore, reduce debug_level to 2.

Is there a way to disable grabbing stats so I do not get the error messages since I am only using this for this one limit.

removing the error messages depends on how many InsaneLimits instances are running on the same ip + if you have truebalancer or any other plugin that request player stats.

 

one thing you can do is upgrading to IL 0.9.4.0* where you can fully disable stats fetching (please READ the whole note behind the release).

 

other things you can do if you keep stats fetching up is keeping "use_slow_weapon_stats" on false (not sure if this is still available in 0.9.4.0 since i have not upgraded yet).

 

and finally you can disable the other plugins that use stats fetching but i doubt it will do any huge difference.

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

Originally Posted by HexaCanon*:

 

few questions i am working on a limit

 

1 - how can i do something like

Code:

avg_HK["AS VAL"] = 14.83;
avg_HK["Weapons/XP2_MP5K/MP5K"] = 13.72;
i have an issue with the start Dictionary thing.

 

2 - if Question 1 has a solution. what can i do to reduce the size of a list if it has lots of weapons with identical value

 

example

Code:

DPS["AEK-971"] = 25;
DPS["Weapons/AK74M/AK74"] = 25;
DPS["AN-94 Abakan"] = 25;
DPS["Steyr AUG"] = 25;
DPS["F2000"] = 25;
DPS["FAMAS"] = 25;
etc..
3 - how can i add all the guns to a list ? i want to do something like foreach Gun in Guns

i am thinking of something like what you usually do to player list

 

Code:

List<PlayerInfoInterface> all = new List<PlayerInfoInterface>();
    all.AddRange(team1.players);
    all.AddRange(team2.players);
    if (team3.players.Count > 0) all.AddRange(team3.players);
    if (team4.players.Count > 0) all.AddRange(team4.players);
4 - if question 3 has a solution. how can i use the weapon name cleaner for it ?

 

Code:

Match m = Regex.Match(Gun, @"/([^/]+)$");
    String wn = Gun;
    if (m.Success) wn = m.Groups[1].Value;
thanks.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Kinsman*:

 

I activated this from the old examples today.

 

Set limit to evaluate OnKill, set action to PBBan

 

Set first_check to this Expression:

Code:

 

Regex.Match(kill.Weapon, @"(Death|Knife|Melee)", RegexOptions.IgnoreCase).Success

 

Set second_check to this Expression:

Code:

 

( limit.Activations(player.Name, TimeSpan.FromSeconds(30)) > 13 )

 

 

 

 

Set these action specific parameters:

Code:

 

ban_duration = Permanent

ban_message = Knife\Nuke hack %w_n%

 

Unfortunately it started banning a crapload of people. Is there better code for this these days, or is my server really chock full of hackers?

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

Originally Posted by HexaCanon*:

 

I activated this from the old examples today.

 

Set limit to evaluate OnKill, set action to PBBan

 

Set first_check to this Expression:

Code:

 

Regex.Match(kill.Weapon, @"(Death|Knife|Melee)", RegexOptions.IgnoreCase).Success

 

Set second_check to this Expression:

Code:

 

( limit.Activations(player.Name, TimeSpan.FromSeconds(30)) > 13 )

 

 

 

 

Set these action specific parameters:

Code:

 

ban_duration = Permanent

ban_message = Knife\Nuke hack %w_n%

 

Unfortunately it started banning a crapload of people. Is there better code for this these days, or is my server really chock full of hackers?

as far as i know, i think limits that depend on timespan also depend on how accurate is the time on your machine.

 

lag in time could trigger the event ?

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

Originally Posted by Singh400*:

 

few questions i am working on a limit

 

1 - how can i do something like

Code:

avg_HK["AS VAL"] = 14.83;
avg_HK["Weapons/XP2_MP5K/MP5K"] = 13.72;
2 - if Question 1 has a solution. what can i do to reduce the size of a list if it has lots of weapons with identical value

 

example

Code:

DPS["AEK-971"] = 25;
DPS["Weapons/AK74M/AK74"] = 25;
DPS["AN-94 Abakan"] = 25;
DPS["Steyr AUG"] = 25;
DPS["F2000"] = 25;
DPS["FAMAS"] = 25;
etc..
3 - how can i add all the guns to a list ? i want to do something like foreach Gun in Guns

i am thinking of something like what you usually do to player list

 

Code:

List<PlayerInfoInterface> all = new List<PlayerInfoInterface>();
    all.AddRange(team1.players);
    all.AddRange(team2.players);
    if (team3.players.Count > 0) all.AddRange(team3.players);
    if (team4.players.Count > 0) all.AddRange(team4.players);
4 - if question 3 has a solution. how can i use the weapon name cleaner for it ?

 

Code:

Match m = Regex.Match(Gun, @"/([^/]+)$");
    String wn = Gun;
    if (m.Success) wn = m.Groups[1].Value;
#3 is answered ...*.

 

And #4 could be put inside of the foreach loop.

 

#2 if they all have the same values, then don't define them individually. Define them as a group == weapons_ar or something like that.

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

Originally Posted by QQStrat*:

 

the only limit you have does not use any tweet, where do you see them ?

 

also read this

 

removing the error messages depends on how many InsaneLimits instances are running on the same ip + if you have truebalancer or any other plugin that request player stats.

 

one thing you can do is upgrading to IL 0.9.4.0* where you can fully disable stats fetching (please READ the whole note behind the release).

 

other things you can do if you keep stats fetching up is keeping "use_slow_weapon_stats" on false (not sure if this is still available in 0.9.4.0 since i have not upgraded yet).

 

and finally you can disable the other plugins that use stats fetching but i doubt it will do any huge difference.

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

Originally Posted by HexaCanon*:

 

#3 is answered ...*.

 

And #4 could be put inside of the foreach loop.

 

#2 if they all have the same values, then don't define them individually. Define them as a group == weapons_ar or something like that.

#3 i dont want to add all weapons in a list manually, as i said in my original topic i want to do something like AddRange like what we do for all list of players.

 

i dont understand your solution for #2 xD i dont know how to do that maybe :s

 

i can post the whole code i have but it is embarrassing with all the mistakes -.-

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

Originally Posted by Mal-Praktis*:

 

I am looking for a way to check player count in the server and set the ticket count for certain game modes. For example, have 50% tickets when less than 8 players on Rush, Squad Rush, TDM, and STDM. Then, when 8 or more players have alternate ticket counts.

 

I have see threads discussing adjusting ticket counts based upon map and game mode, such as this post for a "Nextmap Gamemode Ticket Changer" myrcon.net/...insane-limits-examples#entry18452

 

How would this be adapted to checking player counts and map modes for the next map and setting the proper ticket counts?

 

Thanks!

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

Originally Posted by HexaCanon*:

 

Okay, I think you now have enough data to suggest that the problem is between PunkBuster on the game server and Procon. Everything that Insane Limits is doing is as expected. The correct name is being sent to the game server. After that, Procon gets a list of bans from the game server by searching for "BC2!". It appears that something is going wrong in getting the ban list back from the game server.

 

Actually, that's a good manual test. Go into Procon on the same game server connection that you have these logs/data for. Go to the Console tab and the Punkbuster sub-tab. Type this at the bottom and press Send:

 

pb_sv_banlist BC2!

 

What do you get? Do you see 55RU-DEMOH-? Do you see Kidtrash1710?

i did the command and got this

 

Code:

PunkBuster Server: 31  5d72bb478808da3330306b40c682aa70 {0/-1} "Arising_Hero" "79.88.74.163:3659" 2BNW permanent ban for using M67(Permanent) | BC2!
PunkBuster Server: 32  883c09a530bb81e98d517a08cbb4eb21 {0/-1} "fox2105" "85.5.58.131:3659" 2BNW permanent ban for using M1014(Permanent) | BC2!
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Kugelfaenger*:

 

hey guys,

 

i try to fix the old code, but i dont get it the right way :sad:

using Insane Limits - 0.0.9.3

 

Code:

/* Version V0.8/R3:

CUSTOMIZE: */
String admins = "admin_list"; // Name of custom list for admin player names
String adminTags = "admin_tags_list"; // Name of custom list for admin tags
String kickCmd = @"!k"; // Chat command for kick
String banCmd = @"!b"; // Chat command for ban
String warnCmd = @"!w"; // Chat command for warn
String punishCmd = @"!p"; // Chat command for punish

Dictionary<String, String> reasons = new Dictionary<String,String>();

/* 
To define an abbreviation, write a line of code that looks like this:

reasons["your lower case abbreviation here"] = "Your long reason text here";

Makes sure the abbreviation is all lower case!!!!

CUSTOMIZE:
*/
reasons["idle"] = "Idle too long";
reasons["afk"] = "Away from keyboard too long";
reasons["hack"] = "Suspected of hacking, appeal at myclan.com/url";
reasons["cheat"] = "Suspected of hacking, appeal at myclan.com/url";
reasons["racist"] = "Racists comments in chat, appeal at myclan.com/url";
reasons["room"] = "Make room for an admin";
reasons["glitch"] = "Glitching the map";
reasons["lift"] = "Riding a MAV";
reasons["mav"] = "Using a MAV to run people down";
reasons["mortar"] = "Mortaring from inside a building or deployment area";
// Add your abbreviations here


/* Check for admin status */

String tag = player.Tag;
if (tag.Length == 0) {
	// Maybe they are using [_-=]XXX[=-_]PlayerName format
	Match tm = Regex.Match(player.Name, @"^[=_\-]_([^=_\-]{2,4})[=_\-]");
	if (tm.Success) {
		tag = tm.Groups[1].Value;
	} else {
		tag = "no tag";
	}
}
if (!plugin.isInList(player.Name, admins) && !plugin.isInList(tag, adminTags)) return false;


/* Match the commands */

Match kickMatch = null;
Match banMatch = null;
Match warnMatch =null;
Match punishMatch = null;
Match missing = null;

try {
	kickMatch = Regex.Match(player.LastChat, @"^\s*" + kickCmd + @"\s+([^\s]+)\s+(.*)$", RegexOptions.IgnoreCase);
	banMatch = Regex.Match(player.LastChat, @"^\s*" + banCmd + @"\s+([^\s]+)\s+(.*)$", RegexOptions.IgnoreCase);
	warnMatch = Regex.Match(player.LastChat, @"^\s*" + warnCmd + @"\s+(.*)$", RegexOptions.IgnoreCase);
	punishMatch = Regex.Match(player.LastChat, @"^\s*" + punishCmd + @"\s+([^\s]+)\s+(.*)$", RegexOptions.IgnoreCase);
	missing = Regex.Match(player.LastChat, @"^\s*(_:" + kickCmd + "|" + banCmd + "|" + warnCmd + "|" + punishCmd + ")", RegexOptions.IgnoreCase);
} catch (Exception e) {
	plugin.ConsoleError("^b[Short-cut]^n bad kickCmd or bad banCmd, check syntax: '" + kickCmd + "', '" + banCmd + "'");
	return false;
}

bool isBan = false;
bool isKick = false;
bool isWarn = false;
bool isPunish = false;
String name = null;
String r = null;

if (banMatch.Success) {
	isBan = true;
	name = banMatch.Groups[1].Value;
	r = banMatch.Groups[2].Value;
} else if (kickMatch.Success) {
        isKick = true;
	name = kickMatch.Groups[1].Value;
	r = kickMatch.Groups[2].Value;
} else if (warnMatch.Success) {
        isWarn = true;
	r = warnMatch.Groups[1].Value;
} else if (punishMatch.Success) {
        isPunish = true;
	name = punishMatch.Groups[1].Value;
	r = punishMatch.Groups[2].Value;
} else if (missing.Success) {
	plugin.SendSquadMessage(player.TeamId, player.SquadId, "Player name or reason missing from command");
	return false;
} else return false;

/* Check the player name */

if (String.IsNullOrEmpty(name)) return false;

PlayerInfoInterface target = null;
bool found = false;
if (!found) foreach (PlayerInfoInterface p in team1.players) {
	if (Regex.Match(p.Name, name, RegexOptions.IgnoreCase).Success) {
		target = p;
		found = true;
		break;
	}
}
if (!found) foreach (PlayerInfoInterface p in team2.players) {
	if (Regex.Match(p.Name, name, RegexOptions.IgnoreCase).Success) {
		target = p;
		found = true;
		break;
	}
}
if (!found) foreach (PlayerInfoInterface p in team3.players) {
	if (Regex.Match(p.Name, name, RegexOptions.IgnoreCase).Success) {
		target = p;
		found = true;
		break;
	}
}
if (!found) foreach (PlayerInfoInterface p in team4.players) {
	if (Regex.Match(p.Name, name, RegexOptions.IgnoreCase).Success) {
		target = p;
		found = true;
		break;
	}
}

if (target == null) {
	plugin.ServerCommand("admin.say", "Unknown name '" + name + "'", "player", player.Name);
	return false;
}

/* Check for abbreviated reason */

if (String.IsNullOrEmpty(r)) r = "(unspecified)";

String[] words = Regex.Split(r, @"\s+");

if (words.Length == 1) {
	String abbrev = words[0].ToLower();
	if (reasons.ContainsKey(abbrev)) {
		r = reasons[abbrev];
	}
}

/* Do the command */

String msg = null;

if (isBan) {
	msg = "Banning ";
} else if (isKick) {
	msg = "Kicking ";
} else if (isWarn) {
        msg = "Warning ";
} else if (isPunish) { 
        msg = "Punishing ";
}

msg = msg + target.FullName + " for: " + r;

plugin.ConsoleWrite("^b[Short-cut]^n " + msg);
plugin.PRoConEvent(msg, "Insane Limits");
plugin.SendGlobalMessage(msg);
/* CUSTOMIZE: add logging, email, tweet, etc.,here */

if (isBan) {
	plugin.SendGlobalMessage(msg);
	plugin.EABanPlayerWithMessage(EABanType.Name, EABanDuration.Permanent, target.Name, 0, r);
} else if (isKick) {
	plugin.SendGlobalMessage(msg);
	plugin.KickPlayerWithMessage(target.Name, r);
} else if (isPunish) {
	plugin.ServerCommand("admin.yell", r, "60", "player", target.Name); // Long yell because yell is not visible during move/spawn
	plugin.SendGlobalMessage(msg);
	plugin.KillPlayer(target.Name, 10); // the move may fail, make sure they at least get killed
} else if (isWarn) {
	plugin.SendGlobalMessage(r);
	plugin.ServerCommand("admin.yell", r, "15"); // 15 second yell
}

return false;
if i type !p PLAERNAME reasond, i get the Servermessage 2 times (chat window)

if i type !w reason -> no reaction

 

please help me

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

Originally Posted by PapaCharlie9*:

 

hey guys,

 

i try to fix the old code, but i dont get it the right way :sad:

using Insane Limits - 0.0.9.3

 

 

 

if i type !p PLAERNAME reasond, i get the Servermessage 2 times (chat window)

if i type !w reason -> no reaction

 

please help me

Upgrade to 0.9.4.0 first. Did you change the code? If not, post the link to the original code.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Kugelfaenger*:

 

upgrade to 0.9.4.0 *DONE*

 

I took your code from here:

www.phogue.net/forumvb/showth...nd-and-reasons* (1st post - R3)

 

and tryed to add the !w (warn) and !p (punish) function from post ...*.

 

 

but it seems that i make a mistake, but cant find it :sad:

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