Jump to content

[HELP] Change


illestiraqi

Recommended Posts

Im using F3Team Manager for my server. I'm also going to use Castillo's gang-system, in the F3 Team Manager, it shows "Group"

Screenie of Team Manager:

2meydqw.png

I need the group system connected to Castillo's Gang-system.

Files for Team Manger:

Client:

function createWindow() 
  GUI = {} 
   
  GUI["window"] = guiCreateWindow(0.225,0.225,0.55,0.55,"F3 - Autoteams Manager",true) 
  GUI["grid"] = guiCreateGridList(0.0162,0.061,0.7896,0.9178,true,GUI["window"]) 
  guiGridListSetSelectionMode(GUI["grid"],2) 
  guiGridListSetSortingEnabled(GUI["grid"], false) 
  addEventHandler("onClientGUIClick", GUI["window"], editCellLostFocus, false ) 
   
  GUI["col_name"] = guiGridListAddColumn(GUI["grid"],"Team name",0.3) 
  GUI["col_color"] = guiGridListAddColumn(GUI["grid"],"Color",0.15) 
  GUI["col_tag"] = guiGridListAddColumn(GUI["grid"],"Tag",0.15) 
  GUI["col_group"] = guiGridListAddColumn(GUI["grid"],"Group",0.2) 
  GUI["col_required"] = guiGridListAddColumn(GUI["grid"],"Required",0.15) 
  addEventHandler("onClientGUIClick", GUI["grid"], editCellLostFocus, false ) 
  addEventHandler("onClientGUIDoubleClick", GUI["grid"], editCellContent, false ) 
   
  GUI["btn_load"] = guiCreateButton(0.8165,0.0634,0.1673,0.0728,"Load",true,GUI["window"]) 
  addEventHandler ("onClientGUIClick", GUI["btn_load"], buttonClicked, false ) 
  GUI["btn_save"] = guiCreateButton(0.8183,0.8005,0.1655,0.0728,"Save",true,GUI["window"]) 
  addEventHandler ("onClientGUIClick", GUI["btn_save"], buttonClicked, false ) 
  GUI["btn_close"] = guiCreateButton(0.8183,0.9038,0.1655,0.0728,"Close",true,GUI["window"]) 
  addEventHandler ("onClientGUIClick", GUI["btn_close"], buttonClicked, false ) 
  GUI["btn_add"] = guiCreateButton(0.8183,0.3803,0.1655,0.0728,"Add",true,GUI["window"]) 
  addEventHandler ("onClientGUIClick", GUI["btn_add"], buttonClicked, false ) 
  GUI["btn_delete"] = guiCreateButton(0.8183,0.4671,0.1655,0.0728,"Delete",true,GUI["window"]) 
  addEventHandler ("onClientGUIClick", GUI["btn_delete"], buttonClicked, false ) 
  
  guiWindowSetSizable(GUI["window"], false) 
  guiWindowSetMovable(GUI["window"], false) 
  guiSetVisible(GUI["window"], false) 
  open = false 
end 
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()) , createWindow) 
  
function editCellAccepted() 
  if isElement(GUI["theedit"]) then 
    guiGridListSetItemText(GUI["grid"], selectedRow, selectedCol, guiGetText(GUI["theedit"]), false, false) 
    if (selectedCol == GUI["col_color"]) then 
      guiGridListSetItemColor(GUI["grid"], selectedRow, selectedCol, getColorFromString(guiGetText(GUI["theedit"]))) 
    end 
    destroyElement(GUI["theedit"]) 
  end 
  guiSetInputEnabled(false) 
end 
  
function editCellLostFocus() 
  if isElement(GUI["theedit"]) then 
    destroyElement(GUI["theedit"]) 
  end 
  guiSetInputEnabled(false) 
end 
  
function editCellContent() 
  selectedRow, selectedCol = guiGridListGetSelectedItem(GUI["grid"]) 
   
  if (selectedRow ~= -1 and selectedCol ~= -1) then 
    local text = guiGridListGetItemText( GUI["grid"], selectedRow, selectedCol ) 
    local x,y = getCursorPosition() 
  
    if isElement(GUI["theedit"]) then 
      destroyElement(GUI["theedit"]) 
    end 
    GUI["theedit"] = guiCreateEdit ( x, y, 0.125, 0.025, text, true) 
    addEventHandler("onClientGUIAccepted", GUI["theedit"], editCellAccepted, true) 
    addEventHandler("onClientGUIBlur", GUI["theedit"], editCellLostFocus, true) 
    guiSetInputEnabled(true) 
  end 
end 
  
function buttonClicked()  
  if (source == GUI["btn_close"]) then 
    wannaTogglePanel() 
  end 
  if (source == GUI["btn_load"]) then 
    triggerServerEvent( "gimmeTheFuckinList", getLocalPlayer()) 
  end 
  if (source == GUI["btn_add"]) then 
      local row = guiGridListAddRow ( GUI["grid"] ) 
    guiGridListSetItemText(GUI["grid"], row, GUI["col_name"], "-", false, false ) 
    guiGridListSetItemText(GUI["grid"], row, GUI["col_color"], "#FFFFFF", false, false ) 
    guiGridListSetItemColor(GUI["grid"], row, GUI["col_color"], getColorFromString("#FFFFFF")) 
    guiGridListSetItemText(GUI["grid"], row, GUI["col_tag"], "-", false, false ) 
    guiGridListSetItemText(GUI["grid"], row, GUI["col_group"], "-", false, false ) 
    guiGridListSetItemText(GUI["grid"], row, GUI["col_required"], "tag", false, false ) 
  end 
  if (source == GUI["btn_delete"]) then 
    local thebadbadrow = guiGridListGetSelectedItem(GUI["grid"]) 
    guiGridListRemoveRow (GUI["grid"], thebadbadrow) 
  end 
  if (source == GUI["btn_save"]) then 
    local rowCount = guiGridListGetRowCount(GUI["grid"]) 
    local i = 0 
    local theteams = {} 
    while i <= rowCount - 1 do 
      local teamname = guiGridListGetItemText(GUI["grid"], i, GUI["col_name"]) 
      theteams[teamname] = {} 
      theteams[teamname].name = teamname 
          theteams[teamname].color = guiGridListGetItemText(GUI["grid"], i, GUI["col_color"]) 
      theteams[teamname].tag = guiGridListGetItemText(GUI["grid"], i, GUI["col_tag"]) 
      theteams[teamname].aclGroup = guiGridListGetItemText(GUI["grid"], i, GUI["col_group"]) 
      theteams[teamname].required = guiGridListGetItemText(GUI["grid"], i, GUI["col_required"]) 
      i = i + 1 
    end 
    triggerServerEvent( "hereIzDaFuckinList", getLocalPlayer(), theteams) 
  end 
end 
  
function wannaTogglePanel() 
  open = not open 
  showCursor ( open ) 
  guiSetVisible(GUI["window"], open) 
  if isElement(GUI["theedit"]) then 
    guiSetVisible(GUI["theedit"], open) 
  end 
  if (open == true) then 
    triggerServerEvent( "gimmeTheFuckinList", getLocalPlayer()) 
  end 
end 
addEvent("opendaShitForme", true) 
addEventHandler("opendaShitForme", getRootElement(), wannaTogglePanel) 
  
function loadDaList(theteams) 
  guiGridListClear(GUI["grid"]) 
    for name,data in pairs(theteams) do 
      local row = guiGridListAddRow ( GUI["grid"] ) 
    guiGridListSetItemText(GUI["grid"], row, GUI["col_name"], data.name, false, false ) 
     
    local color = {getColorFromString(data.color)} 
        if not color[1] then 
            color = {255,255,255} 
        end 
    guiGridListSetItemText(GUI["grid"], row, GUI["col_color"], data.color, false, false ) 
    guiGridListSetItemColor(GUI["grid"], row, GUI["col_color"], unpack(color)) 
    guiGridListSetItemText(GUI["grid"], row, GUI["col_tag"], data.tag, false, false ) 
    guiGridListSetItemText(GUI["grid"], row, GUI["col_group"], data.aclGroup, false, false ) 
    guiGridListSetItemText(GUI["grid"], row, GUI["col_required"], data.required, false, false ) 
  end 
end 
addEvent("hereIsDaListNub", true) 
addEventHandler("hereIsDaListNub", getRootElement(), loadDaList) 
  
  

Server:

teams = {} 
 
function toggleClientPanel(player)
  triggerClientEvent(player, "opendaShitForme", getRootElement() )
end
 
function onSomeoneLoggedIn()
  local accountName = getAccountName(getPlayerAccount(source))
  if isObjectInACLGroup("user."..accountName,aclGetGroup("Admin")) then
    unbindKey(source,"F3","down", toggleClientPanel)
    bindKey(source,"F3","down", toggleClientPanel)
  end
end
addEventHandler("onPlayerLogin", getRootElement(), onSomeoneLoggedIn)
 
function sendGridtoClient()
  local theteams = {}
    local rootNode = xmlLoadFile("config.xml")
    local children = xmlNodeGetChildren(rootNode)
    for _,node in pairs(children) do
        local attributes = xmlNodeGetAttributes(node)
        local name = attributes.name
        theteams[name] = attributes
    end
    xmlUnloadFile(rootNode)
    triggerClientEvent(source, "hereIsDaListNub", getRootElement(), theteams)
end
addEvent("gimmeTheFuckinList", true)
addEventHandler("gimmeTheFuckinList", getRootElement(), sendGridtoClient)
 
function saveNewTeams(theteams)
  local thexml = xmlCreateFile("config.xml", "teams")
  for name,settings in next,theteams do
    local child = xmlCreateChild(thexml, "team")
    xmlNodeSetAttribute(child, "name", name)
    xmlNodeSetAttribute(child, "tag", settings.tag)
    xmlNodeSetAttribute(child, "color", settings.color)
    xmlNodeSetAttribute(child, "aclGroup", settings.aclGroup)
    xmlNodeSetAttribute(child, "required", settings.required)
  end
  xmlSaveFile(thexml)
  xmlUnloadFile(thexml)
 
  initiate()
end
addEvent("hereIzDaFuckinList", true)
addEventHandler("hereIzDaFuckinList", getRootElement(), saveNewTeams)
 
function startedResource()
    for k,v in pairs(getElementsByType("player")) do
    local accountName = getAccountName(getPlayerAccount(v))
    if isObjectInACLGroup("user."..accountName,aclGetGroup("Admin")) then
      if (isKeyBound (v,"F3") == false) then
        unbindKey(v,"F3","down", toggleClientPanel)
        bindKey(v,"F3","down", toggleClientPanel)
      end
        end
    end
end
addEventHandler("onResourceStart",getResourceRootElement(),startedResource)
 
------------
-- 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,100,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)
  unbindKey(source,"F3","down", toggleClientPanel)
end
addEventHandler("onPlayerLogout",getRootElement(),loggedOut)
 
 
---
-- Reads the settings and creates the teams if enabled.
--
function initiate()
  teams = {}
 
    for k,v in pairs(getElementsByType("team")) do
    local players = getPlayersInTeam (v)
        for playerKey, playerValue in ipairs ( players ) do
            setPlayerTeam( playerValue, nil)
        end
        destroyElement(v)
    end
   
    local rootNode = xmlLoadFile("config.xml")
    local children = xmlNodeGetChildren(rootNode)
    if children == false then
        outputDebugString("children == false")
        return
    end
    for _,node in pairs(children) do
        local attributes = xmlNodeGetAttributes(node)
        local name = attributes.name
        teams[name] = attributes
        if not toboolean(get("noEmptyTeams")) then
          local color = {getColorFromString(attributes.color)}
          if not color[1] then
              color = {255,255,255}
          end
            teams[name].team = createTeam(name,unpack(color))
        end
    end
    for k,v in pairs(getElementsByType("player")) do
        check(v)
    end
    xmlUnloadFile(rootNode)
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)
 
-- 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 oldteam = getPlayerTeam(player)
    local team = teams[name].team
    if not isElement(team) or getElementType(team) ~= "team" then
      local color = {getColorFromString(teams[name].color)}
      if not color[1] then
          color = {255,255,255}
      end
       
        team = createTeam(teams[name].name,unpack(color))
        teams[name].team = team
    elseif team == oldteam then
        return
    end
    triggerEvent("onPlayerTeamChange", player, oldteam, team)
    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)
    triggerEvent("onPlayerTeamChange", player, getPlayerTeam(player), nil)
    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
 
 
function vehiclepaint(player,seat)
    if (seat == 0) then
      if (getPlayerTeam(player)) then
          local r,g,b = getTeamColor(getPlayerTeam(player))
          setVehicleColor(source,r,g,b,r,g,b,r,g,b,r,g,b)
          setPlayerNametagColor(player, r,g,b)
        else
          setVehicleColor(source,255,255,255,255,255,255,255,255,255,255,255,255)
          setPlayerNametagColor(player, 255,255,255)
        end
    end
end
addEventHandler("onVehicleEnter",getRootElement(),vehiclepaint)
 
function vehicleModelChange(pickupID, pickupType, vehicleModel)
  if (pickupType == "vehiclechange") then
    if getPlayerTeam(source) then
      local r,g,b = getTeamColor(getPlayerTeam(source))
      local vehicle = getPedOccupiedVehicle(source)
      if getPedOccupiedVehicleSeat(source) == 0 then
        setVehicleColor(vehicle,r,g,b,r,g,b,r,g,b,r,g,b)
      end
      setPlayerNametagColor(source, r,g,b)
    else
      local vehicle = getPedOccupiedVehicle(source)
      if getPedOccupiedVehicleSeat(source) == 0 then
        setVehicleColor(vehicle,255,255,255,255,255,255,255,255,255,255,255,255)
      end
      setPlayerNametagColor(source, 255,255,255)
    end
  end
end
addEventHandler("onPlayerPickUpRacePickup", getRootElement(), vehicleModelChange)
 
---
Link to comment
  • 2 weeks later...
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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