Jump to content

Insane Limits - Examples


Recommended Posts

Originally Posted by Singh400*:

 

That's not quite right. In the case of a racist word, they get kicked and if they come back and do it again, they will get kicked twice, once in first_check and again in second_check.

 

I think it would be better to just write two separate limits. Alternatively, write the entire limit in second_check and just set first_check to Expression (true).

From my testing the limit doesn't remember them if they get kicked.

 

So I can come into the test server and say paki --> I get auto-kicked.

 

I can then come back and say cunt --> get a warning --> say cunt again --> I get auto-kicked

 

Out of interest how would I combine it all into one code segment with having the first_check as an expression set to ( true )_. I did have a brief play about, but I couldn't sucessfully merge the two. I left the racism segment untouched, and I did various variations of wrapping the second_check code in

 

Code:

if (count == 2)
{
	plugin.KickPlayerWithMessage(player.Name, plugin.R("[Auto-Admin] Bad Language"));
	plugin.SendGlobalMessage(plugin.R("%p_n% was kicked for using a prohibited word!"));
	plugin.ConsoleWarn(plugin.R("%p_n% was kicked for using a prohibited word!"));
}

return false;
I put double count = limit.Activations ( player.Name ); right at the start of the code.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Satanja*:

 

Uh, did you by any chance set the limit to evaluate OnSpawn instead OnKill? Or OnInterval? Or OnIntervalPlayer? Pretty much if you set it to anything other than OnJoin, you'd get a lot of players kicked unintentionally. If you did set it to OnJoin, it should only kick joiners.

 

Also, what version of Insane Limits are you using? Older versions used to process OnJoin on the eval thread, which could potentially execute on every player instead of on the one joining only. I don't think Verison 0.8 does that anymore, though.

I'm running ProCon 1.2.0.0 which is the latest right? Just did an update check and it says I have the latest version.

 

I have it set to trigger OnJoin, just double checked everything.

 

When I activate the rule, it just boots everyone on the server higher than the rank limit if there's more than x players.

 

Any ideas what could be wrong? I run a flight server for newbies and we are getting a lot of experienced pilots just coming for easy kills and stat padding by beating down newbies that can't even fly straight yet. I've been logging player ranks and all of the pilots that comes to prey on newbies are high rank players, so it would be a good way to get rid of them while still using them to fill the server.

 

EDIT: Sorry misread, I'm Running InsaneLimits 0.0.0.7, I'll upgrade to latest version and see if that fixes it.

 

EDIT2:

 

Just got done testing the latest version. It's still doing it, although now it doesn't do it all in one go like before on 0.0.0.7, but at much slower intervals. It doesn't seem to happen at regular intervals but it's definitely kicking players that are already playing as they have kills and score.

 

I tried filtering events tab to just show player join, and there doesn't seem to be any correlation to players joining and when it tells me it's kicking someone so I'm not sure what's going on.

 

I'm just running the rule in virtual mode so it's not actually kicking anyone, but once activated it says it's kicking all the players already on and playing at random intervals, then once it's done with that, it settles down to only the ones that are joining, and not touching the players already on.

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

Originally Posted by PapaCharlie9*:

 

Is there a way to have the Excessive Kill Rate Kicker (which I changed values and made it a excessive kill rate banner) to be able to put the banned persons guid into your ban list page? Because it banned 2 people for the stand in spawn and kill everyone hack today but it doesnt list them anywhere as being banned.. I used PBban.

I'm not sure. HexaCanon asked the same question in the Plugin thread. There used to be a way to add "BC2!" to the message to get it to log in the PRoCon ban log, but I'm not sure. Maybe ask in the Plugin Development forum? It's PRoCon feature, not Insane Limits.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

From my testing the limit doesn't remember them if they get kicked.

 

So I can come into the test server and say paki --> I get auto-kicked.

 

I can then come back and say cunt --> get a warning --> say cunt again --> I get auto-kicked

 

Out of interest how would I combine it all into one code segment with having the first_check as an expression set to ( true )_. I did have a brief play about, but I couldn't sucessfully merge the two. I left the racism segment untouched, and I did various variations of wrapping the second_check code in

 

Code:

if (count == 2)
{
	plugin.KickPlayerWithMessage(player.Name, plugin.R("[Auto-Admin] Bad Language"));
	plugin.SendGlobalMessage(plugin.R("%p_n% was kicked for using a prohibited word!"));
	plugin.ConsoleWarn(plugin.R("%p_n% was kicked for using a prohibited word!"));
}

return false;
I put double count = limit.Activations ( player.Name ); right at the start of the code.
I guess limit.Activations(player.Name) forgets the count if the player gets kicked. Makes sense, I guess.

 

Given that, I guess your original code is fine. It's just weird to have second_check code do the second part of what the first_check code does. The way the logic is supposed to work is, first_check decides (true or false) whether the limit should be activated, second_check does either additional computation to decide (true or false) for the Action to be executed, or, executes actions in code.

 

I would have just taken all the first_check code and added it to the front of the original second_check code without any other changes (besides changing first_check to (true)).

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

Originally Posted by PapaCharlie9*:

 

I'm running ProCon 1.2.0.0 which is the latest right? Just did an update check and it says I have the latest version.

 

I have it set to trigger OnJoin, just double checked everything.

 

When I activate the rule, it just boots everyone on the server higher than the rank limit if there's more than x players.

 

Any ideas what could be wrong? I run a flight server for newbies and we are getting a lot of experienced pilots just coming for easy kills and stat padding by beating down newbies that can't even fly straight yet. I've been logging player ranks and all of the pilots that comes to prey on newbies are high rank players, so it would be a good way to get rid of them while still using them to fill the server.

 

EDIT: Sorry misread, I'm Running InsaneLimits 0.0.0.7, I'll upgrade to latest version and see if that fixes it.

 

EDIT2:

 

Just got done testing the latest version. It's still doing it, although now it doesn't do it all in one go like before on 0.0.0.7, but at much slower intervals. It doesn't seem to happen at regular intervals but it's definitely kicking players that are already playing as they have kills and score.

 

I tried filtering events tab to just show player join, and there doesn't seem to be any correlation to players joining and when it tells me it's kicking someone so I'm not sure what's going on.

 

I'm just running the rule in virtual mode so it's not actually kicking anyone, but once activated it says it's kicking all the players already on and playing at random intervals, then once it's done with that, it settles down to only the ones that are joining, and not touching the players already on.

That is really weird. It must be a bug in the OnJoin handling in Insane Limits. I never use OnJoin, so I suppose it is possible.

 

As a workaround, you can rewrite the limit as follows.

 

Change the limit to evaluate OnSpawn with Action unchanged (Kick, or whatever).

 

Set first_check to this Expression:

Code:

(true)
Set second_check to this Code:

Code:

String kPrefix = "RankLimit_";
String k = kPrefix + player.Name;
int spawns = 1;
if (player.Data.issetInt(k)) spawns = player.Data.getInt(k);
bool activate = false;
if (spawns == 1 && player.Rank > 45 && server.PlayerCount > 30) {
    activate = true;
} else {
    player.Data.setInt(k, spawns+1);
}
return activate;
Basically, this counts the number of times every player spawns. If this is their first spawn (i.e., right after they join) and their rank is more than 45 and the server has more than 30 players, the Action will be executed. Since the spawn count is incremented only if the condition is not true, if he comes in again, he will be kicked again. For everyone in the game already their spawn counts will be greater than 1 and they will not be kicked. If they quit the server, their count is deleted and they take their chances.

 

Given the description of your server, are you sure you want the server.PlayerCount part? Why not just always kick high rankers?

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

Originally Posted by Singh400*:

 

I would have just taken all the first_check code and added it to the front of the original second_check code without any other changes (besides changing first_check to (true)).

Thanks, but that didn't work. I ended up doing this:-

 

Code:

List<String> racisms = new List<String>();
	racisms.Add("nigger");
	racisms.Add("niggers");
	racisms.Add("paki");
	racisms.Add("pakis");
	racisms.Add("nigga");
	racisms.Add("niggas");

String[] chatwords = Regex.Split(player.LastChat, @"\s+");
    
foreach(String chatword in chatwords) 
{
	foreach(String racism in racisms)
	{
		if (Regex.Match(chatword, "^"+racism+"$", RegexOptions.IgnoreCase).Success)
		{
			plugin.SendGlobalMessage(plugin.R("%p_n% was auto-kicked for using the word: "+racism+"!"));
			plugin.SendGlobalMessage(plugin.R("We operate a zero tolerance policy on racism"));
			plugin.KickPlayerWithMessage(player.Name, plugin.R("[Auto-Admin] Racist Language"));
			plugin.ConsoleWarn(plugin.R("%p_n% used the word: "+racism+""));
			plugin.ConsoleWarn(plugin.R("%p_n% was auto-kicked for using the word: "+racism+"!"));			
			plugin.Log("Logs/InsaneLimits_BWD.log", plugin.R("%date% %time% %p_n% "+racism+""));
			
			return true;
			
		}
	}
}

List<String> swears = new List<String>();
	swears.Add("cunt");
	swears.Add("cunts");
	swears.Add("jew");
	swears.Add("jews");

String[] chat_words = Regex.Split(player.LastChat, @"\s+");
    
foreach(String chat_word in chat_words) 
{
	foreach(String swear in swears)
	{
		if (Regex.Match(chat_word, "^"+swear+"$", RegexOptions.IgnoreCase).Success)
		{
			plugin.SendGlobalMessage(plugin.R("%p_n% please stop using the word: "+swear+"! This is your only warning!"));
			plugin.ConsoleWarn(plugin.R("%p_n% used the word: "+swear+""));
			plugin.Log("Logs/InsaneLimits_BWD.log", plugin.R("%date% %time% %p_n% "+swear+""));
			
			double count = limit.Activations ( player.Name );

			if (count == 2)
				{
					plugin.KickPlayerWithMessage(player.Name, plugin.R("[Auto-Admin] Bad Language"));
					plugin.SendGlobalMessage(plugin.R("%p_n% was auto-kicked for using the word: "+swear+" - after a warning!"));
					plugin.ConsoleWarn(plugin.R("%p_n% was auto-kicked for using the word: "+swear+" - after a warning!"));
				}
			
			return true;
			
		}
	}
}
Strangely if I change if (count == 2) to if ( count == 2 ) it breaks the code and doesn't kick the player at all. I can say cunts, cunt, jew & jews multiple times and all it does is 'warn' me.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Satanja*:

 

Thanks much PapaCharlie9, I'll give that a go.

 

Given the description of your server, are you sure you want the server.PlayerCount part? Why not just always kick high rankers?

They help fill up the server, but I have no problems kicking them later as they come to prey on the newbies. They come to stat pad, and I use them to fill the server and kick them later, an acceptable tradeoff :biggrin:. Once it's at around 20 players or so it starts to fill fast... then start replacing them with low levels and keep the server going. As high levels leave later and server is above playercount limit, high rankers are slowly replaced by low ranks and keeps new players joining.

 

If only we could get specific kill stats for vehicles instead of just "death" this would all be much simpler, but it's better than nothing.

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

Originally Posted by PapaCharlie9*:

 

Strangely if I change if (count == 2) to if ( count == 2 ) it breaks the code and doesn't kick the player at all. I can say cunts, cunt, jew & jews multiple times and all it does is 'warn' me.

Typo? You said change the same thing to the same thing. :smile: Did you mean (count >= 2)? Maybe you had a typo in the code too.

 

Since you don't use count for anything but the test, you can shorten it to:

 

Code:

if (limit.Activations(player.Name) >= 2)
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Singh400*:

 

Typo? You said change the same thing to the same thing. :smile: Did you mean (count >= 2)? Maybe you had a typo in the code too.

 

Since you don't use count for anything but the test, you can shorten it to:

 

Code:

if (limit.Activations(player.Name) >= 2)
No, no typo. If I add a space either side of the brackets the code doesn't work it breaks. Found that a bit odd, and I don't understand why it breaks. It's the same code :huh:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by killengage*:

 

Hello, i'm using the "next round announcer + mode" but since the patch it is displaying the map thats currently running. Has this to do with the new patch ?

 

My code:

 

Evaluation: Onspawn

 

Expression: ( team1.RemainTicketsPercent

 

 

Code:

if (limit.Activations() > 1)
                return false;

        /* BF3 friendly map names, including B2K */
            Dictionary<String, String> Maps = new Dictionary<String, String>();
            Maps.Add("MP_001", "Grand Bazaar");
            Maps.Add("MP_003", "Teheran Highway");
            Maps.Add("MP_007", "Caspian Border");
            Maps.Add("MP_011", "Seine Crossing");
            Maps.Add("MP_012", "Operation Firestorm");
            Maps.Add("MP_013", "Damavand Peak");
            Maps.Add("MP_017", "Noshahr Canals");
            Maps.Add("MP_018", "Kharg Island");
            Maps.Add("MP_Subway", "Operation Metro");
            Maps.Add("XP1_001", "Strike At Karkand");
            Maps.Add("XP1_002", "Gulf of Oman");
            Maps.Add("XP1_003", "Sharqi Peninsula");
            Maps.Add("XP1_004", "Wake Island");
            
            /* BF3 friendly game modes, including B2K */
            Dictionary<String, String> Modes = new Dictionary<String, String>();    
            Modes.Add("ConquestLarge0", "Conquest64");
            Modes.Add("ConquestSmall0", "Conquest");
            Modes.Add("ConquestAssaultLarge0", "Conquest Assault 64");
            Modes.Add("ConquestAssaultSmall0", "Conquest Assault");
            Modes.Add("ConquestAssaultSmall1", "Conquest Assault 2");
            Modes.Add("RushLarge0", "Rush");
            Modes.Add("SquadRush0", "Squad Rush");
            Modes.Add("SquadDeathMatch0", "Squad Deathmatch");
            Modes.Add("TeamDeathMatch0", "Team Deathmatch");

            String mapName = (Maps.ContainsKey(server.MapFileName)) _ Maps[server.MapFileName] : server.MapFileName;
            String modeName = (Modes.ContainsKey(server.Gamemode)) _ Modes[server.Gamemode] : server.Gamemode;

            plugin.ServerCommand("admin.yell", "The next map will be " + mapName + " on " + modeName, "12");
            
return false;
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

No, no typo. If I add a space either side of the brackets the code doesn't work it breaks. Found that a bit odd, and I don't understand why it breaks. It's the same code :huh:

I don't believe it. Unless the spaces were some weird Unicode character, that shouldn't make a difference.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Hello, i'm using the "next round announcer + mode" but since the patch it is displaying the map thats currently running. Has this to do with the new patch ?

 

My code:

 

Evaluation: Onspawn

 

Expression: ( team1.RemainTicketsPercent

 

 

Code:

if (limit.Activations() > 1)
                return false;

        /* BF3 friendly map names, including B2K */
            Dictionary<String, String> Maps = new Dictionary<String, String>();
            Maps.Add("MP_001", "Grand Bazaar");
            Maps.Add("MP_003", "Teheran Highway");
            Maps.Add("MP_007", "Caspian Border");
            Maps.Add("MP_011", "Seine Crossing");
            Maps.Add("MP_012", "Operation Firestorm");
            Maps.Add("MP_013", "Damavand Peak");
            Maps.Add("MP_017", "Noshahr Canals");
            Maps.Add("MP_018", "Kharg Island");
            Maps.Add("MP_Subway", "Operation Metro");
            Maps.Add("XP1_001", "Strike At Karkand");
            Maps.Add("XP1_002", "Gulf of Oman");
            Maps.Add("XP1_003", "Sharqi Peninsula");
            Maps.Add("XP1_004", "Wake Island");
            
            /* BF3 friendly game modes, including B2K */
            Dictionary<String, String> Modes = new Dictionary<String, String>();    
            Modes.Add("ConquestLarge0", "Conquest64");
            Modes.Add("ConquestSmall0", "Conquest");
            Modes.Add("ConquestAssaultLarge0", "Conquest Assault 64");
            Modes.Add("ConquestAssaultSmall0", "Conquest Assault");
            Modes.Add("ConquestAssaultSmall1", "Conquest Assault 2");
            Modes.Add("RushLarge0", "Rush");
            Modes.Add("SquadRush0", "Squad Rush");
            Modes.Add("SquadDeathMatch0", "Squad Deathmatch");
            Modes.Add("TeamDeathMatch0", "Team Deathmatch");

            String mapName = (Maps.ContainsKey(server.MapFileName)) _ Maps[server.MapFileName] : server.MapFileName;
            String modeName = (Modes.ContainsKey(server.Gamemode)) _ Modes[server.Gamemode] : server.Gamemode;

            plugin.ServerCommand("admin.yell", "The next map will be " + mapName + " on " + modeName, "12");
            
return false;
No, I just made a mistake when I updated the map lists. Give me the link to the original post and I'll fix it. Short cut for you, change server.MapFileName to server.NextMapFileName (3 places) and server.Gamemode to server.NextGamemode (3 places).
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Singh400*:

 

I don't believe it. Unless the spaces were some weird Unicode character, that shouldn't make a difference.

Nope definitely happens. Kept playing around with it last night, until I manually re-complied the limit. After that it would work fine.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Singh400*:

 

I need make for M26 Mass/Dart Glitch. (G3A3 + underbarrel + Heavy Barrel)

 

Firt Kill = Alert + kill

Second Kill = Kick

It cannot be done. The kill information is reported as the main weapon not the M26.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Hutchew*:

 

Hey guys, need help with this one, please. I'm lost.

 

I want to set up a system like this.......

 

1. Tagged admin (in list: admin_tag)types in a command "!brwarn" , preferably in squad chat.

 

2. This sets off an automated admin "yell" AND "say" to all players to the effect of this: "BaseRape is forbidden on this server! Do not shoot into or camp main spawn." for 6-7 seconds.

 

3. Want it to automatically repeat again in 10 seconds and stay on for 6-7 seconds.

 

4. Tagged admin types in command "!brspank " (can playername be a partial or does it have to be exact_) and that player will be spanked (killed) immediately and then again for the next 4 spawns.

 

5. When player is "spanked", want automated admin "yell" and "say" to all players on first kill only to the effect of " spanked for baserape!" for 4-5 seconds.

 

6. Tagged admin types in command "!brkick " and that player is kicked from server with reason "go away, baseraper".

 

7. When player is kicked, want automated admin "yell" and "say" to all players to the effect " kicked for baserape. Now looking for the next one!"

 

8. Any way to "tweet" and/or "log" the player spanked or kicked and the admin's name who executed the command?

 

Thanks in advance!

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

Originally Posted by madmuthamonk*:

 

Hello, i'm using the "next round announcer + mode" but since the patch it is displaying the map thats currently running. Has this to do with the new patch ?

 

My code:

 

Evaluation: Onspawn

 

Expression: ( team1.RemainTicketsPercent

 

 

Code:

if (limit.Activations() > 1)
                return false;

        /* BF3 friendly map names, including B2K */
            Dictionary<String, String> Maps = new Dictionary<String, String>();
            Maps.Add("MP_001", "Grand Bazaar");
            Maps.Add("MP_003", "Teheran Highway");
            Maps.Add("MP_007", "Caspian Border");
            Maps.Add("MP_011", "Seine Crossing");
            Maps.Add("MP_012", "Operation Firestorm");
            Maps.Add("MP_013", "Damavand Peak");
            Maps.Add("MP_017", "Noshahr Canals");
            Maps.Add("MP_018", "Kharg Island");
            Maps.Add("MP_Subway", "Operation Metro");
            Maps.Add("XP1_001", "Strike At Karkand");
            Maps.Add("XP1_002", "Gulf of Oman");
            Maps.Add("XP1_003", "Sharqi Peninsula");
            Maps.Add("XP1_004", "Wake Island");
            
            /* BF3 friendly game modes, including B2K */
            Dictionary<String, String> Modes = new Dictionary<String, String>();    
            Modes.Add("ConquestLarge0", "Conquest64");
            Modes.Add("ConquestSmall0", "Conquest");
            Modes.Add("ConquestAssaultLarge0", "Conquest Assault 64");
            Modes.Add("ConquestAssaultSmall0", "Conquest Assault");
            Modes.Add("ConquestAssaultSmall1", "Conquest Assault 2");
            Modes.Add("RushLarge0", "Rush");
            Modes.Add("SquadRush0", "Squad Rush");
            Modes.Add("SquadDeathMatch0", "Squad Deathmatch");
            Modes.Add("TeamDeathMatch0", "Team Deathmatch");

            String mapName = (Maps.ContainsKey(server.MapFileName)) _ Maps[server.MapFileName] : server.MapFileName;
            String modeName = (Modes.ContainsKey(server.Gamemode)) _ Modes[server.Gamemode] : server.Gamemode;

            plugin.ServerCommand("admin.yell", "The next map will be " + mapName + " on " + modeName, "12");
            
return false;
Is it possible to set this to show the next map in the maplist in intervals instead of just wth 15% of tickets left?
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Is it possible to set this to show the next map in the maplist in intervals instead of just wth 15% of tickets left?

Depends on what you mean by "intervals". You mean like, every 5 minutes or something like that? If so, yes, it is possible, but tricky to do.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Hey guys, need help with this one, please. I'm lost.

 

I want to set up a system like this.......

 

1. Tagged admin (in list: admin_tag)types in a command "!brwarn" , preferably in squad chat.

 

2. This sets off an automated admin "yell" AND "say" to all players to the effect of this: "BaseRape is forbidden on this server! Do not shoot into or camp main spawn." for 6-7 seconds.

 

3. Want it to automatically repeat again in 10 seconds and stay on for 6-7 seconds.

 

4. Tagged admin types in command "!brspank " (can playername be a partial or does it have to be exact_) and that player will be spanked (killed) immediately and then again for the next 4 spawns.

 

5. When player is "spanked", want automated admin "yell" and "say" to all players on first kill only to the effect of " spanked for baserape!" for 4-5 seconds.

 

6. Tagged admin types in command "!brkick " and that player is kicked from server with reason "go away, baseraper".

 

7. When player is kicked, want automated admin "yell" and "say" to all players to the effect " kicked for baserape. Now looking for the next one!"

 

8. Any way to "tweet" and/or "log" the player spanked or kicked and the admin's name who executed the command?

 

Thanks in advance!

To do exactly what you asked for is tricky and a lot of code. Anything the requires timed delays is difficult.

 

That said, I already had an example that was close to what you wanted, so I made some modifications to get it closer. Here ya go:

 

http://www.phogue.net/forumvb/showth...ll=1#post48812*

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

Originally Posted by Hutchew*:

 

That's perfect, Papacharlie. Works like a charm. Thank you very much!

 

I set action to log & tweet, hoping for admin who executed and player punished to be reported, but I get no tweets or logs and nothing in the debug saying it's trying, either. I do have other limits tweeting & logging that are working, so I know it's not my twitter account. Any ideas?

 

Thanks again!

 

Hutchew

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

Originally Posted by Bl1ndy*:

 

I'm wondering if theyre's interest in a Search & Destroy gametype. It shouldn't be allot of work, run the server on Squad Rush and design a script that keeps killing you on spawn when you used your 1 life. If all players are dead end the round. Sounds like fun to me :smile:

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

Originally Posted by PapaCharlie9*:

 

I'm wondering if theyre's interest in a Search & Destroy gametype. It shouldn't be allot of work, run the server on Squad Rush and design a script that keeps killing you on spawn when you used your 1 life. If all players are dead end the round. Sounds like fun to me :smile:

Is there anything in BF3 that could be the Bomb? Then we could do full sized Rush. Like designate Squad Alpha as being the holder of the Bomb and the script would only allow the holder of the Bomb to be in Squad Alpha, moving in and out as needed. But what would the bomb be? It would have to be something that PRoCon gets told about.

 

Not that I'm volunteering to write it! I got to get the M26 thingy out the door first.

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

Originally Posted by PapaCharlie9*:

 

That's perfect, Papacharlie. Works like a charm. Thank you very much!

 

I set action to log & tweet, hoping for admin who executed and player punished to be reported, but I get no tweets or logs and nothing in the debug saying it's trying, either. I do have other limits tweeting & logging that are working, so I know it's not my twitter account. Any ideas?

 

Thanks again!

 

Hutchew

I replied in the example thread. If you have any further questions or requests about that particular example, post directly in that example thread:

 

http://www.phogue.net/forumvb/showth...ll=1#post48874*

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

Originally Posted by )RAG()N*:

 

This limit responds in the In-Game chat when someone types @shownext

 

Set the limit to evaluate OnAnyChat, and set the action to None.

 

Set first_check to this Expression:

 

Code:

player.LastChat.StartsWith("@shownext")
Set second_check to this Code:

 

Code:

/* BF3 friendly map names, including B2K */
    Dictionary<String, String> Maps = new Dictionary<String, String>();
    Maps.Add("MP_001", "Grand Bazaar");
    Maps.Add("MP_003", "Teheran Highway");
    Maps.Add("MP_007", "Caspian Border");
    Maps.Add("MP_011", "Seine Crossing");
    Maps.Add("MP_012", "Operation Firestorm");
    Maps.Add("MP_013", "Damavand Peak");
    Maps.Add("MP_017", "Noshahr Canals");
    Maps.Add("MP_018", "Kharg Island");
    Maps.Add("MP_Subway", "Operation Metro");
    Maps.Add("XP1_001", "Strike At Karkand");
    Maps.Add("XP1_002", "Gulf of Oman");
    Maps.Add("XP1_003", "Sharqi Peninsula");
    Maps.Add("XP1_004", "Wake Island");
    
    /* BF3 friendly game modes, including B2K */
    Dictionary<String, String> Modes = new Dictionary<String, String>();    
    Modes.Add("ConquestLarge0", "Conquest64");
    Modes.Add("ConquestSmall0", "Conquest");
    Modes.Add("ConquestSmall1", "Conquest Assault");
    Modes.Add("RushLarge0", "Rush");
    Modes.Add("SquadRush0", "Squad Rush");
    Modes.Add("SquadDeathMatch0", "Squad Deathmatch");
    Modes.Add("TeamDeathMatch0", "Team Deathmatch");
    
    plugin.ConsoleWrite(plugin.R("%p_n% wants to know the next map"));
    if (Maps.ContainsKey(server.NextMapFileName) && Modes.ContainsKey(server.NextGamemode))
        plugin.SendGlobalMessage("The next map is " + Maps[server.NextMapFileName]+" on " + Modes[server.NextGamemode]);
Anyone now I can get this to "yell" the next map instead of showing in the chat window?

 

edit:

 

I have it working but can't work out how to set the time for the yell _, or so it only displays to the player that call for the rules?

 

I have changed the bottom line to this

 

Code:

plugin.ServerCommand("admin.yell", "The next map will be " + Maps[server.NextMapFileName]+ " on " + Modes[server.NextGamemode]);
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Dudenell*:

 

hey papa I mentioned this a little earlier but the first kill of the match plugin only works about 50% of the time due the fact we have players being killed after the round end and apparently that counts as the first kill of the round (weird right_). Anyways I was thinking about this and is there a way connect the limits (Ex limit one is one class, limit 2 is another) and have limit one check to see if the round has started and if it has to reset limit 2 so that it can activate the first kill of the round?

 

I hope this makes sense. Thank you!

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

Originally Posted by Singh400*:

 

Anyone now I can get this to "yell" the next map instead of showing in the chat window?

 

edit:

 

I have it working but can't work out how to set the time for the yell _, or so it only displays to the player that call for the rules?

 

I have changed the bottom line to this

 

Code:

plugin.ServerCommand("admin.yell", "The next map will be " + Maps[server.NextMapFileName]+ " on " + Modes[server.NextGamemode]);
Try this instead:

 

Code:

plugin.ServerCommand("admin.yell", "The next map will be " + Maps[server.NextMapFileName]+ " on " + Modes[server.NextGamemode], "15", "player", player.Name );
That is a private yell to the player who activated the command, and the yell will be displayed for a total of 15 seconds.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

hey papa I mentioned this a little earlier but the first kill of the match plugin only works about 50% of the time due the fact we have players being killed after the round end and apparently that counts as the first kill of the round (weird right_). Anyways I was thinking about this and is there a way connect the limits (Ex limit one is one class, limit 2 is another) and have limit one check to see if the round has started and if it has to reset limit 2 so that it can activate the first kill of the round?

 

I hope this makes sense. Thank you!

Makes perfect sense and Insane Limits has support for one limit to "talk" to another limit. I use it all the time. The Data and RoundData "scratchpads" can be used to communicate data between limits. BTW, I've seen that problem too. It has to do with when Insane Limits thinks the round is over. Whatever micovery is using, it's too soon.

 

They way I would do it is with 2 limits.

 

1) Evaluate OnRoundStart and set plugin.Data.setBool("Ready", true);

 

2) Evaluate OnKill and if (plugin.Data.getBool("Ready")), post first kill message or whatever. Then plugin.Data.setBool("Ready", false).

 

Don't use limit.Activations or any of that, it's no longer necessary now that we are keeping track ourselves.

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

Originally Posted by )RAG()N*:

 

Try this instead:

 

Code:

plugin.ServerCommand("admin.yell", "The next map will be " + Maps[server.NextMapFileName]+ " on " + Modes[server.NextGamemode], "15", "player", player.Name );
That is a private yell to the player who activated the command, and the yell will be displayed for a total of 15 seconds.
ThanX Singh400 works great. :smile:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Dudenell*:

 

Makes perfect sense and Insane Limits has support for one limit to "talk" to another limit. I use it all the time. The Data and RoundData "scratchpads" can be used to communicate data between limits. BTW, I've seen that problem too. It has to do with when Insane Limits thinks the round is over. Whatever micovery is using, it's too soon.

 

They way I would do it is with 2 limits.

 

1) Evaluate OnRoundStart and set plugin.Data.setBool("Ready", true);

 

2) Evaluate OnKill and if (plugin.Data.getBool("Ready")), post first kill message or whatever. Then plugin.Data.setBool("Ready", false).

 

Don't use limit.Activations or any of that, it's no longer necessary now that we are keeping track ourselves.

Thanks for the help!

 

Here is the updated version of the welcome message for those who are lazy:

 

YOU ARE GOING TO NEED 2 LIMITS FOR THIS

 

Set the limit to evaluate for OnRoundStart

 

Set first_check to Code

Code:

plugin.Data.setBool("Ready", true);
Next create a new limit

 

Set a limit to evaluate OnKill

 

Set first_check to Code

Code:

if (plugin.Data.getBool("Ready")) {
    Match m = Regex.Match(kill.Weapon, @"/[^/]+$");
    String wn = kill.Weapon;
    if (m.Success) wn = m.Groups[1].Value;
    String msg = player.FullName + " slaughtered " + victim.FullName + " for the first kill of the round with a " + wn + "!";
	plugin.PRoConChat("ADMIN > " + msg);
    plugin.ServerCommand("admin.yell", msg);
	plugin.Data.setBool("Ready", false);
}
return false;
* Restored post. It could be that the author is no longer active.
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




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