Jump to content

[HELP] Auto-Teams not working


Recommended Posts

Posted (edited)

Hi, i got an Auto Teamscript

And i got 2 teams: VIP & Players

But only the VIP people get in the VIP team..

The normal players stay in no teams

here is the CONFIG.xml

<team name="Players" color="#FFFFFF" tag="[Crew]" aclGroup="Everyone" />
<team name="Admin(s)" color="#FF0000" tag="[Crew]" aclGroup="Admin" />

Here is the lua file:

------------
-- Events --
------------
 
function playerJoined()
check(source)
end
addEventHandler("onPlayerJoin",getRootElement(),playerJoined)
 
function playerChangedNick(oldNick,newNick)
-- Use timer to wait until the nick really has changed
setTimer(check,1000,1,source)
end
addEventHandler("onPlayerChangeNick",getRootElement(),playerChangedNick)
 
function playerQuit()
removePlayerFromTeam(source)
end
addEventHandler("onPlayerQuit",getRootElement(),playerQuit)
 
-- Check for ACL Groups on login/logout
function loggedIn()
check(source)
end
addEventHandler("onPlayerLogin",getRootElement(),loggedIn)
 
function loggedOut()
check(source)
end
addEventHandler("onPlayerLogout",getRootElement(),loggedOut)
 
 
-- Holds the teams as defined in the settings
local teams = {}
 
---
-- Reads the settings and creates the teams if enabled.
--
function initiate()
local rootNode = getResourceConfig("config.xml")
local children = xmlNodeGetChildren(rootNode)
if children == false then
return
end
for _,node in pairs(children) do
local attributes = xmlNodeGetAttributes(node)
local name = attributes.name
local color = {getColorFromString(attributes.color)}
if not color[1] then
		color = {255,255,255}
end
	teams[name] = attributes
	teams[name].color = color
if not toboolean(get("noEmptyTeams")) then
		teams[name].team = createTeam(name,unpack(color))
end
end
for k,v in pairs(getElementsByType("player")) do
	check(v)
end
end
addEventHandler("onResourceStart",getResourceRootElement(),initiate)
 
---------------
-- Functions --
---------------
 
---
-- Checks the player's nick and ACL Groups and sets his team if necessary.
--
-- @param   player   player: The player element
--
function check(player)
if not isElement(player) or getElementType(player) ~= "player" then
debug("No player")
return
end
local nick = getPlayerName(player)
local accountName = getAccountName(getPlayerAccount(player))
for name,data in pairs(teams) do
local tagMatch = false
local aclGroupMatch = false
if data.tag ~= nil and string.find(nick,data.tag,1,true) then
		tagMatch = true
end
if data.aclGroup ~= nil and accountName and isObjectInACLGroup("user."..accountName,aclGetGroup(data.aclGroup)) then
		aclGroupMatch = true
end
if data.required == "both" then
if tagMatch and aclGroupMatch then
			addPlayerToTeam(player,name)
return
end
else
if tagMatch or aclGroupMatch then
			addPlayerToTeam(player,name)
return
end
end
end
removePlayerFromTeam(player)
setPlayerTeam(player,nil)
end
 
---
-- Adds a player to the team appropriate for the name.
-- It is not checked if the team is really defined in the table, since
-- it should only be called if it is.
--
-- Creates the team if it doesn't exist.
--
-- @param   player   player: The player element
-- @param   string   name: The name of the team
--
function addPlayerToTeam(player,name)
local team = teams[name].team
if not isElement(team) or getElementType(team) ~= "team" then
team = createTeam(teams[name].name,unpack(teams[name].color))
	teams[name].team = team
end
setPlayerTeam(player,team)
debug("Added player '"..getPlayerName(player).."' to team '"..name.."'")
end
 
---
-- Removes a player from a team. Also checks if any team
-- needs to be removed.
--
-- @param   player   player: The player element
--
function removePlayerFromTeam(player)
setPlayerTeam(player,nil)
debug("Removed player '"..getPlayerName(player).."' from team")
if toboolean(get("noEmptyTeams")) then
for k,v in pairs(teams) do
local team = v.team
if isElement(team) and getElementType(team) == "team" then
if countPlayersInTeam(team) == 0 then
destroyElement(team)
end
end
end
end
end
 
---
-- Converts a string-boolean into a boolean.
--
-- @param   string   string: The string (e.g. "false")
-- @return  true/false       Returns false if the string is "false" or evaluates to false (nil/false), true otherwise
--
function toboolean(string)
if string == "false" or not string then
return false
end
return true
end
 
-----------
-- Debug --
-----------
 
-- Little debug function to turn on/off debug
setElementData(getResourceRootElement(),"debug",true)
function debug(string)
if getElementData(getResourceRootElement(),"debug") then
outputDebugString("autoteams: "..string)
end
end

Regards,

Jesseunit

Edited by Guest
Posted

It would help to show us the lua code, as well as the config, otherwise it is very hard for us to diagnose the problem.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...