chaminvnzla Posted July 27, 2011 Share Posted July 27, 2011 (edited) the color of the team should get on the radar with the color of their team on blip help me please ------------ -- 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.."'") local attached = getAttachedElements (player) local redBar, greenBar, blueBar = getTeamColor(team) if (attached) then for k,element in ipairs(attached) do if getElementType (element) == "blip" then setBlipColor(element,redBar,greenBar,blueBar,255) end end end 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[/code] and I think the error is here [code=text]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.."'") local attached = getAttachedElements (player) local redBar, greenBar, blueBar = getTeamColor(team) if (attached) then for k,element in ipairs(attached) do if getElementType (element) == "blip" then setBlipColor(element,redBar,greenBar,blueBar,255) end end end end Edited July 27, 2011 by Guest Link to comment
bandi94 Posted July 27, 2011 Share Posted July 27, 2011 use "/debugscript 3" to find the error Link to comment
chaminvnzla Posted July 27, 2011 Author Share Posted July 27, 2011 use "/debugscript 3" to find the error Link to comment
bandi94 Posted July 27, 2011 Share Posted July 27, 2011 ------------ -- 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.."'") local attached = getAttachedElements (player) local redBar, greenBar, blueBar = unpack(teams[name].color) if (attached) then for k,element in ipairs(attached) do if getElementType (element) == "blip" then setBlipColor(element,redBar,greenBar,blueBar,255) end end end 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 Link to comment
bandi94 Posted July 27, 2011 Share Posted July 27, 2011 i tested it and work when the resource is started when the next map start all blips are white Link to comment
chaminvnzla Posted July 27, 2011 Author Share Posted July 27, 2011 i tested it and work when the resource is started when the next map start all blips are white Yes, you did me the script that works well? thanks for replying Link to comment
chaminvnzla Posted July 28, 2011 Author Share Posted July 28, 2011 i tested it and work when the resource is started when the next map start all blips are white not working Link to comment
Jaysds1 Posted July 28, 2011 Share Posted July 28, 2011 Please don't double post and here: function(player) if player then getPlayerTeam(player) if (getPlayerTeam(player) == false) then -- OPEN THE GUI OR WHAT EVERY, THEN WHEN THEY CHOOSE A TEAM USE setPlayerTeam(player,"THE TEAM") local r, g, b = getTeamColor(getPlayerTeam(player)) createBlipAttachedTo(player,2,1,r,g,b) end end end Link to comment
JR10 Posted July 28, 2011 Share Posted July 28, 2011 (edited) That's wrong. function(player) if player then getPlayerTeam(player) if (getPlayerTeam(player) == false) then -- OPEN THE GUI OR WHAT EVERY, THEN WHEN THEY CHOOSE A TEAM USE setPlayerTeam(player,getTeamFromName("THE TEAM")) local r, g, b = getTeamColor(getPlayerTeam(player)) createBlipAttachedTo(player,2,1,r,g,b) end end end Edited July 28, 2011 by Guest Link to comment
chaminvnzla Posted July 28, 2011 Author Share Posted July 28, 2011 That's wrong. function(player) if player then getPlayerTeam(player) if (getPlayerTeam(player) == false) then -- OPEN THE GUI OR WHAT EVERY, THEN WHEN THEY CHOOSE A TEAM USE setPlayerTeam(player,getTeamFromName("THE TEAM")) local r, g, b = getTeamColor(getPlayerTeam(player)) createBlipAttachedTo(player,2,1,r,g,b) end end end Where I put this? thanks for replying all Link to comment
JR10 Posted July 28, 2011 Share Posted July 28, 2011 function setThePlayerTeam(player) if player then getPlayerTeam(player) if (getPlayerTeam(player) == false) then -- OPEN THE GUI OR WHAT EVERY, THEN WHEN THEY CHOOSE A TEAM USE setPlayerTeam(player,getTeamFromName("THE TEAM")) local r, g, b = getTeamColor(getPlayerTeam(player)) createBlipAttachedTo(player,2,1,r,g,b) end end end Put it anywhere, and use setThePlayerTeam(player) anywhere you want to sets the player team to THE TEAM. Link to comment
chaminvnzla Posted July 29, 2011 Author Share Posted July 29, 2011 function setThePlayerTeam(player) if player then getPlayerTeam(player) if (getPlayerTeam(player) == false) then -- OPEN THE GUI OR WHAT EVERY, THEN WHEN THEY CHOOSE A TEAM USE setPlayerTeam(player,getTeamFromName("THE TEAM")) local r, g, b = getTeamColor(getPlayerTeam(player)) createBlipAttachedTo(player,2,1,r,g,b) end end end Put it anywhere, and use setThePlayerTeam(player) anywhere you want to sets the player team to THE TEAM. I do not understand what the "THE TEAM" Link to comment
Jaysds1 Posted July 29, 2011 Share Posted July 29, 2011 Ok, remove that and just add: local r, g, b = getTeamColor(getPlayerTeam(player)) createBlipAttachedTo(player,2,1,r,g,b) Link to comment
chaminvnzla Posted July 30, 2011 Author Share Posted July 30, 2011 Ok, remove that and just add: local r, g, b = getTeamColor(getPlayerTeam(player)) createBlipAttachedTo(player,2,1,r,g,b) where I place it? thanks for replying Link to comment
CapY Posted July 30, 2011 Share Posted July 30, 2011 In your MTA:SA\Server\Mods\Deathmatch\resources create folder there and name it how you want . Link to comment
Jaysds1 Posted July 30, 2011 Share Posted July 30, 2011 Put it in your script... it's client-side and server-side. Link to comment
chaminvnzla Posted July 30, 2011 Author Share Posted July 30, 2011 Put it in your script...it's client-side and server-side. I place the server in the last without anything more? Link to comment
bandi94 Posted July 31, 2011 Share Posted July 31, 2011 where I place it? thanks for replying function setThePlayerTeam(player) if player then local r, g, b = getTeamColor(getPlayerTeam(player)) createBlipAttachedTo(player,2,1,r,g,b) end end Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now