<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://bf2tech.uturista.pt/index.php?action=history&amp;feed=atom&amp;title=Scripts%3ARconMap</id>
	<title>Scripts:RconMap - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://bf2tech.uturista.pt/index.php?action=history&amp;feed=atom&amp;title=Scripts%3ARconMap"/>
	<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Scripts:RconMap&amp;action=history"/>
	<updated>2026-08-06T00:35:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Scripts:RconMap&amp;diff=108&amp;oldid=prev</id>
		<title>Pireax: Created page with &quot;__TOC__  == Introduction ==  Here&#039;s a script that adds an rcon command called &#039;map&#039;. I&#039;m not really a programmer so some of this can probably made in a better way but I&#039;m just...&quot;</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Scripts:RconMap&amp;diff=108&amp;oldid=prev"/>
		<updated>2018-06-22T15:27:01Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;__TOC__  == Introduction ==  Here&amp;#039;s a script that adds an rcon command called &amp;#039;map&amp;#039;. I&amp;#039;m not really a programmer so some of this can probably made in a better way but I&amp;#039;m just...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s a script that adds an rcon command called &amp;#039;map&amp;#039;. I&amp;#039;m not really a programmer so some of this can probably made in a better way but I&amp;#039;m just glad I got it working. Wouldn&amp;#039;t mind any tips on improvement though =).&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
1. Place map.py in the &amp;lt;code&amp;gt;BF2 Server Directory/admin/standard_admin/&amp;lt;/code&amp;gt; directory&lt;br /&gt;
&lt;br /&gt;
2. Add a line in the &amp;lt;code&amp;gt;___init___.py&amp;lt;/code&amp;gt; file in the same directory that says &amp;lt;code&amp;gt;import map&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Restart server, login through rcon and type &amp;#039;rcon map&amp;#039; for instructions&lt;br /&gt;
&lt;br /&gt;
== Update ==&lt;br /&gt;
&lt;br /&gt;
Version 0.2 doesn&amp;#039;t clear the maplist any longer, it will instead search through your current maplist and append the map requested if it&amp;#039;s not already in the rotation.  &lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
As you might see the script is easily customisable so you can add your own aliases if needed.&lt;br /&gt;
&lt;br /&gt;
[http://biomass.baconmen.net/map.py Download link for the script]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 # --------------------------------------&lt;br /&gt;
 # Battlefield 2 - rcon command &amp;quot;map&amp;quot; 0.2&lt;br /&gt;
 # --------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 # Version history:&lt;br /&gt;
 #&lt;br /&gt;
 #    0.2    Made maplist check so that you won&amp;#039;t loose your maplist when the map is changed&lt;br /&gt;
 #            through the command.&lt;br /&gt;
 #&lt;br /&gt;
 # Unnamed    First release. Basic map functionality.&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 # Written by biomass from Clan BaconMen (http://www.baconmen.net)&lt;br /&gt;
 # Thanks to Truppo for the inital inspiration =)&lt;br /&gt;
 # Lots of kudos to the people behind the BF2 Python Wiki.&lt;br /&gt;
 #&lt;br /&gt;
 # This scripts let you change maps through rcon without having to deal&lt;br /&gt;
 # with a maplist manually. It also allows you to use shorter names for&lt;br /&gt;
 # the different maps and currently if a map isn&amp;#039;t in your maplist it&lt;br /&gt;
 # will be appended and added to that rotation..&lt;br /&gt;
 #&lt;br /&gt;
 # HOWTO Install:&lt;br /&gt;
 #&lt;br /&gt;
 # 1. Place map.py in the &amp;lt;BF2 Server Directory/admin/standard_admin/&amp;gt; directory&lt;br /&gt;
 # 2. Add a line in the ___init___.py file in the same directory that says&lt;br /&gt;
 #    import map&lt;br /&gt;
 # 3. Restart server, login through rcon and type &amp;#039;rcon map&amp;#039; for instructions&lt;br /&gt;
 #&lt;br /&gt;
 # That&amp;#039;s it =)&lt;br /&gt;
 &lt;br /&gt;
 import default&lt;br /&gt;
 import new&lt;br /&gt;
 import string&lt;br /&gt;
 import host&lt;br /&gt;
 import re&lt;br /&gt;
 &lt;br /&gt;
 def rcmd_map(self, ctx, cmd):&lt;br /&gt;
     shortmaps = {&lt;br /&gt;
     &amp;#039;dalian&amp;#039;: &amp;#039;dalian_plant&amp;#039;,&lt;br /&gt;
     &amp;#039;plant&amp;#039;: &amp;#039;dalian_plant&amp;#039;,&lt;br /&gt;
     &amp;#039;dalian_plant&amp;#039;: &amp;#039;dalian_plant&amp;#039;,&lt;br /&gt;
     &amp;#039;daqing&amp;#039;: &amp;#039;daqing_oilfields&amp;#039;,&lt;br /&gt;
     &amp;#039;oilfields&amp;#039;: &amp;#039;daqing_oilfields&amp;#039;,&lt;br /&gt;
     &amp;#039;daqing_oilfields&amp;#039;: &amp;#039;daqing_oilfields&amp;#039;,&lt;br /&gt;
     &amp;#039;dragon&amp;#039;: &amp;#039;dragon_valley&amp;#039;,&lt;br /&gt;
     &amp;#039;valley&amp;#039;: &amp;#039;dragon_valley&amp;#039;,&lt;br /&gt;
     &amp;#039;dragon_valley&amp;#039;: &amp;#039;dragon_valley&amp;#039;,&lt;br /&gt;
     &amp;#039;fushe&amp;#039;: &amp;#039;fushe_pass&amp;#039;,&lt;br /&gt;
     &amp;#039;pass&amp;#039;: &amp;#039;fushe_pass&amp;#039;,&lt;br /&gt;
     &amp;#039;fushe_pass&amp;#039;: &amp;#039;fushe_pass&amp;#039;,&lt;br /&gt;
     &amp;#039;gulf&amp;#039;: &amp;#039;gulf_of_oman&amp;#039;,&lt;br /&gt;
     &amp;#039;oman&amp;#039;: &amp;#039;gulf_of_oman&amp;#039;,&lt;br /&gt;
     &amp;#039;gulf_of_oman&amp;#039;: &amp;#039;gulf_of_oman&amp;#039;,&lt;br /&gt;
     &amp;#039;kubra&amp;#039;: &amp;#039;kubra_dam&amp;#039;,&lt;br /&gt;
     &amp;#039;dam&amp;#039;: &amp;#039;kubra_dam&amp;#039;,&lt;br /&gt;
     &amp;#039;kubra_dam&amp;#039;: &amp;#039;kubra_dam&amp;#039;,&lt;br /&gt;
     &amp;#039;mashtuur&amp;#039;: &amp;#039;mashtuur_city&amp;#039;,&lt;br /&gt;
     &amp;#039;city&amp;#039;: &amp;#039;mashtuur_city&amp;#039;,&lt;br /&gt;
     &amp;#039;mashtuur_city&amp;#039;: &amp;#039;mashtuur_city&amp;#039;,&lt;br /&gt;
     &amp;#039;clean&amp;#039;: &amp;#039;operation_clean_sweep&amp;#039;,&lt;br /&gt;
     &amp;#039;sweep&amp;#039;: &amp;#039;operation_clean_sweep&amp;#039;,&lt;br /&gt;
     &amp;#039;operation&amp;#039;: &amp;#039;operation_clean_sweep&amp;#039;,&lt;br /&gt;
     &amp;#039;operation_clean_sweep&amp;#039;: &amp;#039;operation_clean_sweep&amp;#039;,&lt;br /&gt;
     &amp;#039;sharqi&amp;#039;: &amp;#039;sharqi_peninsula&amp;#039;,&lt;br /&gt;
     &amp;#039;peninsula&amp;#039;: &amp;#039;sharqi_peninsula&amp;#039;,&lt;br /&gt;
     &amp;#039;sharqi_peninsula&amp;#039;: &amp;#039;sharqi_peninsula&amp;#039;,&lt;br /&gt;
     &amp;#039;strike&amp;#039;: &amp;#039;strike_at_karkand&amp;#039;,&lt;br /&gt;
     &amp;#039;karkand&amp;#039;: &amp;#039;strike_at_karkand&amp;#039;,&lt;br /&gt;
     &amp;#039;strike_at_karkand&amp;#039;: &amp;#039;strike_at_karkand&amp;#039;,&lt;br /&gt;
     &amp;#039;songhua&amp;#039;: &amp;#039;songhua_stalemate&amp;#039;,&lt;br /&gt;
     &amp;#039;stalemate&amp;#039;: &amp;#039;songhua_stalemate&amp;#039;,&lt;br /&gt;
     &amp;#039;songhua_stalemate&amp;#039;: &amp;#039;songhua_stalemate&amp;#039;,&lt;br /&gt;
     &amp;#039;zatar&amp;#039;: &amp;#039;zatar_wetlands&amp;#039;,&lt;br /&gt;
     &amp;#039;wetlands&amp;#039;: &amp;#039;zatar_wetlands&amp;#039;,&lt;br /&gt;
     &amp;#039;zatar_wetlands&amp;#039;: &amp;#039;zatar_wetlands&amp;#039;&lt;br /&gt;
     }&lt;br /&gt;
     maperror = 0&lt;br /&gt;
     mapinmaplist = 0&lt;br /&gt;
     if cmd != &amp;quot;&amp;quot;:&lt;br /&gt;
         mapvars = cmd.split()&lt;br /&gt;
         if len(mapvars) == 1:&lt;br /&gt;
             if mapvars[0] == &amp;#039;list&amp;#039;:&lt;br /&gt;
                 maperror = 2&lt;br /&gt;
                 for m in shortmaps:&lt;br /&gt;
                     ctx.write(m + &amp;#039;, &amp;#039;)&lt;br /&gt;
             elif shortmaps.has_key(mapvars[0]):&lt;br /&gt;
                 ctx.write(&amp;#039;Please specify playersize...\n&amp;#039;)&lt;br /&gt;
                 maperror = 1&lt;br /&gt;
             else:&lt;br /&gt;
                 ctx.write(&amp;#039;Unknown map...\n&amp;#039;)&lt;br /&gt;
                 maperror = 1&lt;br /&gt;
         if len(mapvars) &amp;gt;= 2:&lt;br /&gt;
             if not shortmaps.has_key(mapvars[0]):&lt;br /&gt;
                 maperror = 1&lt;br /&gt;
                 ctx.write(&amp;#039;Unknown map...\n&amp;#039;)&lt;br /&gt;
             try:&lt;br /&gt;
                 if int(mapvars[1]) not in [16,32,64]:&lt;br /&gt;
                     maperror = 1&lt;br /&gt;
                     ctx.write(&amp;#039;Unknown playersize...\n&amp;#039;)&lt;br /&gt;
             except ValueError:&lt;br /&gt;
                 ctx.write(&amp;#039;Unknown playersize...\n&amp;#039;)&lt;br /&gt;
                 maperror = 1&lt;br /&gt;
     else:&lt;br /&gt;
         maperror = 1&lt;br /&gt;
     if int(maperror) == 1:&lt;br /&gt;
         ctx.write(&amp;#039;\n&amp;#039;)&lt;br /&gt;
         ctx.write(&amp;#039;map: USAGE: rcon map (partial mapword or complete mapname) (playersize 16/32/64)\n&amp;#039;)&lt;br /&gt;
         ctx.write(&amp;#039;map: USAGE: rcon map list  - prints a list of valid aliases/names\n&amp;#039;)&lt;br /&gt;
     elif int(maperror) == 2:&lt;br /&gt;
         ctx.write(&amp;#039;end of maplist\n&amp;#039;)&lt;br /&gt;
     else:&lt;br /&gt;
         maplist = serverConfig(&amp;quot;maplist.list&amp;quot;)&lt;br /&gt;
         pattern = re.compile(&amp;#039;^\d+:\s\&amp;quot;(.*?)\&amp;quot;\sgpm_cq\s(\d{2})$&amp;#039;, re.MULTILINE)&lt;br /&gt;
         result = []&lt;br /&gt;
         for maplist in pattern.findall(maplist):&lt;br /&gt;
             result.append((maplist[0].lower(),maplist[1]))&lt;br /&gt;
         for mapavailable in result:&lt;br /&gt;
             if str(mapavailable[0]) == shortmaps[mapvars[0]]:&lt;br /&gt;
                 if int(mapavailable[1]) == int(mapvars[1]):&lt;br /&gt;
                     mapinmaplist = 1&lt;br /&gt;
         if mapinmaplist != 0:&lt;br /&gt;
             host.rcon_invoke(&amp;quot;admin.nextLevel &amp;quot; + str(result.index((shortmaps[mapvars[0]],mapvars[1]))))&lt;br /&gt;
             host.rcon_invoke(&amp;quot;admin.runNextLevel&amp;quot;)&lt;br /&gt;
             ctx.write(&amp;#039;Map in maplist - Changing map to &amp;#039; + shortmaps[mapvars[0]] + &amp;#039; - &amp;#039; + mapvars[1] + &amp;#039; players\n&amp;#039;)&lt;br /&gt;
         else:&lt;br /&gt;
             ctx.write(&amp;#039;Changing map to &amp;#039; + shortmaps[mapvars[0]] + &amp;#039; - &amp;#039; + mapvars[1] + &amp;#039; players\n&amp;#039;)&lt;br /&gt;
             host.rcon_invoke(&amp;#039;mapList.append &amp;#039; + shortmaps[mapvars[0]] + &amp;#039; gpm_cq &amp;#039; + mapvars[1])&lt;br /&gt;
             host.rcon_invoke(&amp;quot;game.sayAll \&amp;quot;Changing map to &amp;quot; + shortmaps[mapvars[0]] + &amp;quot; - &amp;quot; + mapvars[1] + &amp;quot; players\&amp;quot;&amp;quot;)&lt;br /&gt;
             host.rcon_invoke(&amp;quot;admin.nextLevel &amp;quot; + str(len(result)))&lt;br /&gt;
             host.rcon_invoke(&amp;quot;admin.runNextLevel&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 newMethod = new.instancemethod(rcmd_map, default.server, default.AdminServer)&lt;br /&gt;
 &lt;br /&gt;
 default.AdminServer.rcmd_map = newMethod&lt;br /&gt;
 &lt;br /&gt;
 default.server.rcon_cmds[&amp;#039;map&amp;#039;] = default.AdminServer.rcmd_map&lt;br /&gt;
 &lt;br /&gt;
 def serverConfig(variableName):&lt;br /&gt;
     return host.rcon_invoke(variableName).strip()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Updates =&lt;br /&gt;
&lt;br /&gt;
2005-Jul-30: Version 0.2 posted&lt;br /&gt;
&lt;br /&gt;
earlier date: First version posted&lt;/div&gt;</summary>
		<author><name>Pireax</name></author>
	</entry>
</feed>