Scripts:ClanmemberBalance
Short Description
Autobalance unleashed by Nexus2k:
This Modification prevent Clanmembers/Commanders/Squadleaders and Squad Members from Autobalance and additionally switchs Clanmembers to one Team on connect
Protect Clanmembers/Commander/Squadleader from Autobalance:
Open bf2/admin/standard_admin/autobalance.py with a texteditor Add at Line 7:
#Change this to your Clantag clantag="Net.BS|"
And add at Line 46, after:
if not bf2.serverSettings.getAutoBalanceTeam(): return
this:
# Prevent Clanmembers from Autobalancing name=p.getName() if name.find(clantag)>-1: return None # Squadleader/Commander prevent from Change if p.isCommander(): return None if p.isSquadLeader(): return None
--Nexus2k 05:46, 18 Jul 2005 (MDT)
Additions
For more than one Clan Tag:
Modifiy the clantag variable: from:
#Change this to your Clantag clantag="Net.BS|"
to
#Insert here your Clantags clantags=["Net.BS|","|CSAR|"]
and from:
# Prevent Clanmembers from Autobalancing name=p.getName() if name.find(clantag)>-1: return None
to
# Prevent Clanmembers from Autobalancing name=p.getName() for clantag in clantags: if name.find(clantag)>-1: return None
Squadmemberautobalanceprotection:
(From ~RIP~Brian on http://bf1942.lightcubed.com/forum/viewtopic.php?p=14370#14370) add after this section :
# Prevent Clanmembers from Autobalancing name=p.getName() if name.find(clantag)>-1: return None # Squadleader/Commander prevent from Change if p.isCommander(): return None if p.isSquadLeader(): return None
the following code
# Prevent squad members from change if p.getSquadId()>0: return None
More Additions
Auto TeamSet on Connect:
Open autobalance.py add after:
if team2 > team1: p.setTeam(1) else: p.setTeam(2)
this code part for only One Clan:
#change Team to 1 on Connect if Clanmember name=p.getName() if name.find(clantag)>-1: p.setTeam(1)
or this code part for multiple Clans:
#change Team to 1 on Connect if Clanmember name=p.getName() for clantag in clantags: if name.find(clantag)>-1: p.setTeam(1)
Example
The whole autobalance.py can look like this:
Example The whole autobalance.py can look like this: # team autobalance system import bf2 import host from bf2 import g_debug #Insert here your Clantags clantags=["Net.BS|","|CSAR|"] def init(): if g_debug: print 'initializing autobalance script' host.registerHandler('PlayerConnect', onPlayerConnect) host.registerHandler('PlayerDeath', onPlayerDeath) host.registerHandler('PlayerChangeTeams', onPlayerChangeTeams) def onPlayerConnect(p): # dont teamswitch alive players, or they will have the wrong teams kit if p.isAlive(): return # place player on the team with least players team1 = 0 team2 = 0 for tp in bf2.playerManager.getPlayers(): if tp != p: if tp.getTeam() == 1: team1 += 1 else: team2 += 1 team2 = team2 * bf2.serverSettings.getTeamRatioPercent() / 100.0 if team2 > team1: p.setTeam(1) else: p.setTeam(2) #change Team to 1 on Connect if Clanmember name=p.getName() for clantag in clantags: if name.find(clantag)>-1: p.setTeam(1) def onPlayerDeath(p, vehicle): if not bf2.serverSettings.getAutoBalanceTeam(): return # Prevent Clanmembers from Autobalancing name=p.getName() for clantag in clantags: if name.find(clantag)>-1: return None # Squadleader/Commander prevent from Change if p.isCommander(): return None if p.isSquadLeader(): return None # Prevent squad members from change if p.getSquadId()>0: return None # dont use autobalance when its suicide/changes team if p.getSuicide(): p.setSuicide(0) return aiPlayerBalance = 0 team1 = 0 team2 = 0 for tp in bf2.playerManager.getPlayers(): if tp.getTeam() == 1: team1 += 1 else: team2 += 1 if tp.isAIPlayer(): aiPlayerBalance += 1 else: aiPlayerBalance -= 1 if host.sgl_getIsAIGame(): if not (aiPlayerBalance < 0): if not p.isAIPlayer(): return team2 = team2 * bf2.serverSettings.getTeamRatioPercent() / 100.0 if (p.getTeam() == 1): if (team2+1) < team1: p.setTeam(2) elif (p.getTeam() == 2): if (team1+1) < team2: p.setTeam(1) def onPlayerChangeTeams(p, humanHasSpawned): if not bf2.serverSettings.getAutoBalanceTeam(): return # dont teamswitch alive players, or they will have the wrong teams kit if p.isAlive(): return if host.sgl_getIsAIGame(): if humanHasSpawned: return if p.isAIPlayer(): return # handling aiplayer team change autobalance when round not started team = p.getTeam() aiplayer = 0 for tp in bf2.playerManager.getPlayers(): if aiplayer == 0 and tp.getTeam() == team and tp.isAIPlayer(): aiplayer = tp break if aiplayer: if p.getTeam() == 1: aiplayer.setTeam(2) else: aiplayer.setTeam(1) else: # checking to see if player is allowed to change teams team1 = 0 team2 = 0 for tp in bf2.playerManager.getPlayers(): if tp.getTeam() == 1: team1 += 1 else: team2 += 1 if abs(team1 - team2) > 1: if p.getTeam() == 1: p.setTeam(2) else: p.setTeam(1)
Feautures
With all modifications you got a Autobalancescript with following Features:
- Auto set Team 1 for Clanmembers on connect - Protect Clanmembers from Autobalance - Protect Commanders and Squadleaders from Autobalance - Protect Squadmembers from Autobalance
Feedback
You can give me a Feedback at nexus2kswiss(at)bs-dc.com
--Nexus2k 06:02, 21 Jul 2005 (MDT)