Author Topic: Sourcebans & ULX/ULib  (Read 113501 times)

0 Members and 1 Guest are viewing this topic.

Offline centran

  • Newbie
  • *
  • Posts: 43
  • Karma: 8
Re: Sourcebans & ULX/ULib
« Reply #120 on: February 03, 2014, 12:49:43 PM »
Thanks dataviruset for adding to this.

Is there any way to make it actually report the banning admin's name to Sourcebans?

The person needs to be added in Sourcebans and then they should show up properly. Otherwise it will send as admin 0 which is console. So make sure the admin is setup properly in Sourcebans. This script will not add admins from ulx to sourcebans.
« Last Edit: February 03, 2014, 12:52:44 PM by centran »

Offline Bytewave

  • Respected Community Member
  • Hero Member
  • *****
  • Posts: 718
  • Karma: 116
  • :)
    • My Homepage
Re: Sourcebans & ULX/ULib
« Reply #121 on: February 03, 2014, 02:18:47 PM »
Thanks dataviruset for adding to this.

The person needs to be added in Sourcebans and then they should show up properly. Otherwise it will send as admin 0 which is console. So make sure the admin is setup properly in Sourcebans. This script will not add admins from ulx to sourcebans.
Thanks. :)
bw81@ulysses-forums ~ % whoami
Homepage

Offline TechNo

  • Newbie
  • *
  • Posts: 2
  • Karma: 0
Re: Sourcebans & ULX/ULib
« Reply #122 on: February 09, 2014, 05:44:11 AM »
When i am trying to ban a user, i get this error.



What have i done wrong :/? I followed the guide.

Offline Bytewave

  • Respected Community Member
  • Hero Member
  • *****
  • Posts: 718
  • Karma: 116
  • :)
    • My Homepage
Re: Sourcebans & ULX/ULib
« Reply #123 on: February 09, 2014, 12:02:37 PM »
Just a question:
When SourceBans 2.0 launches, will we need to make any changes to anything?
I'm assuming most likely yes, but I don't know...
bw81@ulysses-forums ~ % whoami
Homepage

Offline Storm

  • Full Member
  • ***
  • Posts: 220
  • Karma: 4
Re: Sourcebans & ULX/ULib
« Reply #124 on: March 19, 2014, 06:52:51 AM »
I saw earlier in this post that there might be a ULX integration with Sourcebans. Might this still be a possibility at some point? I find setting this up myself would be a bit difficult!

Offline Arhenox

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
Re: Sourcebans & ULX/ULib
« Reply #125 on: April 21, 2014, 12:53:50 PM »
Almost everything is working ok, except Sourcebans XD
After map change - there's no problem, but after few minutes I get "[SourceBans.lua] The server has lost connection to the database. Retrying..." error, then when I try to ban someone  - bans don't get saved in database. Recently I've changed my hosting provider, but their MySQL settings are exactly the same (although I didn't get this error before). I've added some notifymessage functions to the script, so it would notify me if there were any problems with DB, but they're not showing in the server console (additionaly - message in BanOnSuccess function doesn't show up too, so it's not being called). Any ideas?
------------------------
Edit: Everything is working OK right now, I've added checking is database connected and if not, database:connect(); :)
« Last Edit: April 22, 2014, 01:51:22 AM by Arhenox »

Offline Rhapsody

  • Newbie
  • *
  • Posts: 5
  • Karma: -1
Re: Sourcebans & ULX/ULib
« Reply #126 on: May 26, 2014, 10:10:39 PM »
Okay, I've done a crapload of fixes (as you also forgot the gatekeeper), but !sban won't put bans onto the SourceBans database.

Dat empty banlist:


Anyway, I've found the working gatekeeper lua for gmod 13. Place it in srcds/orangebox/garrysmod/lua/includes/modules:

Code: [Select]
gatekeeper={}
local spawning={}
 
gameevent.Listen("player_connect")
gameevent.Listen("player_disconnect")
 
function gatekeeper.Drop(userid, reason)
    game.ConsoleCommand(string.format("kickid %d %s\n",userid,reason:gsub(';|\n','')))
end
 
function gatekeeper.GetNumClients()
    local active=#player.GetAll()
    return {spawning=#spawning, active=active, total=#spawning+active}
end
 
function gatekeeper.GetUserByAddress(addr)
    for k,v in pairs(player.GetAll()) do
        if(v:IPAddress()==addr) then
            return v:UserID()
        end
    end
end
 
hook.Add("player_connect", "GateKeeper", function(data)
    local ret=hook.Call("PlayerPasswordAuth", GAMEMODE, data.name, "", data.networkid, data.address)
    print(ret)
    if(type(ret)=="string") then
        gatekeeper.Drop(data.userid, ret)
        return
    elseif(type(ret)=="boolean") then
        if(ret) then
            gatekeeper.Drop(data.userid, "Bad Password")
            return
        end
    end
    table.insert(spawning, data.userid)
end)
 
hook.Add("player_disconnect", "GateKeeper", function(data)
    for k,v in pairs(spawning) do
        if(data.userid==v) then
            table.remove(spawning, k)
            break
        end
    end
end)
 
hook.Add("PlayerInitialSpawn", "GateKeeper", function(ply)
    for k,v in pairs(spawning) do
        if(ply:UserID()==v) then
            table.remove(spawning, k)
            break
        end
    end
end)

function gatekeeper.DropAllClients(reason)
    for k,v in pairs(spawning) do
        gatekeeper.Drop(v, reason)
    end
    for k,v in pairs(player.GetAll()) do
        gatekeeper.Drop(v, reason)
    end
end

This may seem like quite a bump, but I've used the code from this post to add gatekeeper, and it's working perfectly. However, one of the things that I've noticed, regardless as to whether gatekeeper is installed or not, is that Sourcebans fails to report the name of the person who banned the player, and instead says CONSOLE. Is there anything I can do to fix this?

Offline Xer0n

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
Re: Sourcebans & ULX/ULib
« Reply #127 on: May 28, 2014, 01:31:50 AM »
I did your "second" option to incorporate everything into one command, but ULX seems to be relying solely on Sourcebans and not writing anything to banned_users.cfg and the "listid" function & banlist in ULX are empty when blocking.

I fear that if the bans aren't being written to ULX when a blocked user joins, should the website go down all of the bans will be exempt and be a security risk. 

When I was on evolve and a user joined that was source banned it would write that steamid into the server preventing them from even connecting and getting to "Sending Client Info.." on the first connect until the ban was removed.

Also when I click on the 'SourceBans' tab in ULX, it shows a bunch of steamid's.. I don't know what this is showing me.  Is it everyone banned on this server?
« Last Edit: May 28, 2014, 01:36:08 AM by Xer0n »

Offline Stickly Man!

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 1270
  • Karma: 164
  • What even IS software anymore?
    • XGUI
Re: Sourcebans & ULX/ULib
« Reply #128 on: May 28, 2014, 10:11:44 AM »
Also when I click on the 'SourceBans' tab in ULX, it shows a bunch of steamid's.. I don't know what this is showing me.  Is it everyone banned on this server?

ULX does not natively support SourceBans- what that is referring to is bans that are stored in the Source Engine (banned_users.cfg, via banid command). ULX currently uses these bans in conjuction with data from data/ulib/bans.txt to store bans- any bans that show up in that menu are bans that don't have any data from the bans.txt file.
Join our Team Ulysses community discord! https://discord.gg/gR4Uye6

Offline Xer0n

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
Re: Sourcebans & ULX/ULib
« Reply #129 on: May 28, 2014, 10:30:27 PM »
Ok, my only concern is that we run 8 GMod servers and when we ban a user from one, they keep trying to connect to other servers.  They never actually get "source banned" according to the ULX Ban Menu.  It gets pretty annoying when sourcebans has to keep blocking.

Evolve would write the ban into the engine, and on it's 5 minute checkup it would remove any that don't exist as active on sourcebans.. maybe I'm just used to that.

Offline [R.B Team]FinnTheHuman

  • Newbie
  • *
  • Posts: 1
  • Karma: 0
Re: Sourcebans & ULX/ULib
« Reply #130 on: July 01, 2014, 09:03:20 AM »
Have a error

[ERROR] addons/ulib/lua/ulib/server/player.lua:267: '<eof>' expected near 'end'
  1. unknown - addons/ulib/lua/ulib/server/player.lua:0
Here`s a player.lua


--[[
   Title: Player

   Holds some helpful player functions.
]]

--[[
   Table: slapSounds

   These are the sounds used for slaps.
]]
local slapSounds = {
   "physics/body/body_medium_impact_hard1.wav",
   "physics/body/body_medium_impact_hard2.wav",
   "physics/body/body_medium_impact_hard3.wav",
   "physics/body/body_medium_impact_hard5.wav",
   "physics/body/body_medium_impact_hard6.wav",
   "physics/body/body_medium_impact_soft5.wav",
   "physics/body/body_medium_impact_soft6.wav",
   "physics/body/body_medium_impact_soft7.wav",
}


--[[
   Function: slap

   Slaps an entity, can be a user or any entity.

   Parameters:

      ent - The target ent.
      damage - *(Optional, defaults to 0)* The amount of damage to inflict on the entity.
      power - *(Optional, defaults to 30)* The power of the slap.
      nosound - *(Optional, defaults to false)* If true, no sound will be played.
]]
function ULib.slap( ent, damage, power, nosound )
   if ent:GetMoveType() == MOVETYPE_OBSERVER then return end -- Nothing we can do.

   damage = damage or 0
   power = power or 500

   if ent:IsPlayer() then
      if not ent:Alive() then
         return -- Nothing we can do.
      end

      if ent:InVehicle() then
         ent:ExitVehicle()
      end

      if ent:GetMoveType() == MOVETYPE_NOCLIP then
         ent:SetMoveType( MOVETYPE_WALK )
      end
   end

   if not nosound then -- Play a slap sound
      local sound_num = math.random( #slapSounds ) -- Choose at random
      ent:EmitSound( slapSounds[ sound_num ] )
   end

   local direction = Vector( math.random( 20 )-10, math.random( 20 )-10, math.random( 20 )-5 ) -- Make it random, slightly biased to go up.
   ULib.applyAccel( ent, power, direction )

   local angle_punch_pitch = math.Rand( -20, 20 )
   local angle_punch_yaw = math.sqrt( 20*20 - angle_punch_pitch * angle_punch_pitch )
   if math.random( 0, 1 ) == 1 then
      angle_punch_yaw = angle_punch_yaw * -1
   end
   ent:ViewPunch( Angle( angle_punch_pitch, angle_punch_yaw, 0 ) )

   local newHp = ent:Health() - damage
   if newHp <= 0 then
      if ent:IsPlayer() then
         ent:Kill()
      else
         ent:Fire( "break", 1, 0 )
      end
      return
   end
   ent:SetHealth( newHp )
end

--[[
   Function: kick

   Kicks a user.

   Parameters:

      ply - The player to kick.
      reason - *(Optional)* The reason to give for kicking.
]]
function ULib.kick( ply, reason, calling_ply )
   if reason and calling_ply ~= nil then
      local nick = calling_ply:IsValid() and string.format( "%s(%s)", calling_ply:Nick(), calling_ply:SteamID() ) or "Console"
      ply:Kick( string.format( "Kicked by %s (%s)", nick, reason or "[ULX] Kicked from server" ) )
   else
      ply:Kick( reason or "[ULX] Kicked from server" )
   end
end


--[[
   Function: ban

   Bans a user.

   Parameters:

      ply - The player to ban.
      time - *(Optional)* The time in minutes to ban the person for, leave nil or 0 for permaban.
      reason - *(Optional)* The reason for banning
      admin - *(Optional)* Admin player enacting ban

   Revisions:

      v2.10 - Added support for custom ban list
]]
function ULib.ban( ply, time, reason, admin )
   if not time or type( time ) ~= "number" then
      time = 0
   end

   ULib.addBan( ply:SteamID(), time, reason, ply:Name(), admin )

   -- Load our currently banned users so we don't overwrite them
   if ULib.fileExists( "cfg/banned_user.cfg" ) then
      ULib.execFile( "cfg/banned_user.cfg" )
   end
end


--[[
   Function: kickban

   Kicks and bans a user.

   Parameters:

      ply - The player to ban.
      time - *(Optional)* The time in minutes to ban the person for, leave nil or 0 for permaban.
      reason - *(Optional)* The reason for banning
      admin - *(Optional)* Admin player enacting ban

   Revisions:

      v2.10 - Added support for custom ban list
]]
function ULib.kickban( ply, time, reason, admin )
   if not time or type( time ) ~= "number" then
      time = 0
   end

   ULib.addBan( ply:SteamID(), time, reason, ply:Name(), admin )

   -- Load our currently banned users so we don't overwrite them
   if ULib.fileExists( "cfg/banned_user.cfg" ) then
      ULib.execFile( "cfg/banned_user.cfg" )
   end
end

--[[
   Function: addBan

   Helper function to store additional data about bans.

   Parameters:

      steamid - Banned player's steamid
      time - Length of ban
      reason - *(Optional)* Reason for banning
      name - *(Optional)* Name of player banned
      admin - *(Optional)* Admin player enacting the ban

   Revisions:

      2.10 - Initial
      2.40 - If the steamid is connected, kicks them with the reason given
]]
function ULib.addBan( steamid, time, reason, name, admin )
        local strTime = time ~= 0 and string.format( "for %s minute(s)", time ) or "permanently"
        local showReason = string.format( "Banned %s: %s", strTime, reason )
 
        if ( sourcebans ) then
                sourcebans.BanPlayerBySteamID( steamid, time*60, reason, admin, name )
        else
                local players = player.GetAll()
                for i=1, #players do
                        if players[ i ]:SteamID() == steamid then
                                ULib.kick( players[ i ], showReason, admin )
                        end
                end
 
                -- This redundant kick code is to ensure they're kicked -- even if they're joining
                game.ConsoleCommand( string.format( "kickid %s %s\n", steamid, showReason or "" ) )
                game.ConsoleCommand( string.format( "banid %f %s kick\n", time, steamid ) )
                game.ConsoleCommand( "writeid\n" )
        end
 
        local admin_name
        if admin then
                admin_name = "(Console)"
                if admin:IsValid() then
                        admin_name = string.format( "%s(%s)", admin:Name(), admin:SteamID() )
                end
        end
 
        local t = {}
        if ULib.bans[ steamid ] then
                t = ULib.bans[ steamid ]
                t.modified_admin = admin_name
                t.modified_time = os.time()
        else
                t.admin = admin_name
        end
        t.time = t.time or os.time()
        if time > 0 then
                t.unban = ( ( time * 60 ) + os.time() )
        else
                t.unban = 0
        end
        if reason then
                t.reason = reason
        end
        if name then
                t.name = name
        end
        ULib.bans[ steamid ] = t
        file.Write( ULib.BANS_FILE, ULib.makeKeyValues( ULib.bans ) )
end

   -- This redundant kick code is to ensure they're kicked -- even if they're joining
   game.ConsoleCommand( string.format( "kickid %s %s\n", steamid, showReason or "" ) )
   game.ConsoleCommand( string.format( "banid %f %s kick\n", time, steamid ) )
   game.ConsoleCommand( "writeid\n" )

   local admin_name
   if admin then
      admin_name = "(Console)"
      if admin:IsValid() then
         admin_name = string.format( "%s(%s)", admin:Name(), admin:SteamID() )
      end
   end

   local t = {}
   if ULib.bans[ steamid ] then
      t = ULib.bans[ steamid ]
      t.modified_admin = admin_name
      t.modified_time = os.time()
   else
      t.admin = admin_name
   end
   t.time = t.time or os.time()
   if time > 0 then
      t.unban = ( ( time * 60 ) + os.time() )
   else
      t.unban = 0
   end
   if reason then
      t.reason = reason
   end
   if name then
      t.name = name
   end
   ULib.bans[ steamid ] = t
   ULib.fileWrite( ULib.BANS_FILE, ULib.makeKeyValues( ULib.bans ) )
end

   

--[[
   Function: unban

   Unbans the given steamid.

   Parameters:

      steamid - The steamid to unban.

   Revisions:

      v2.10 - Initial
]]
function ULib.unban( steamid )
 
        --Default banlist
        if file.Exists( "cfg/banned_user.cfg", "GAME" ) then
                ULib.execFile( "cfg/banned_user.cfg", "GAME" )
        end
        if ( sourcebans ) then
                sourcebans.UnbanPlayerBySteamID( steamid, "In game unban", nil)
        else
                ULib.queueFunctionCall( game.ConsoleCommand, "removeid " .. steamid .. ";writeid\n" ) -- Execute after done loading bans
        end
 
        --ULib banlist
        ULib.bans[ steamid ] = nil
        file.Write( ULib.BANS_FILE, ULib.makeKeyValues( ULib.bans ) )
 
end

local function doInvis()
   local players = player.GetAll()
   local remove = true
   for _, player in ipairs( players ) do
      local t = player:GetTable()
      if t.invis then
         remove = false
         if player:Alive() and player:GetActiveWeapon():IsValid() then
            if player:GetActiveWeapon() ~= t.invis.wep then
               timer.Simple( 0.05, function () ULib.invisible( player, true, t.invis.vis ) end )
               t.invis.wep = player:GetActiveWeapon()
            end
         end
      end
   end

   if remove then
      hook.Remove( "Think", "InvisThink" )
   end
end

--[[
   Function: invisible

   Makes a user invisible

   Parameters:

      ply - The player to affect.
      bool - Whether they're invisible or not
      visibility - *(Optional, defaults to 0)* A number from 0 to 255 for their visibility.

   Revisions:

      v2.40 - Removes shadow when invisible
]]
function ULib.invisible( ply, bool, visibility )
   if not ply:IsValid() then return end -- This is called on a timer so we need to verify they're still connected

   if bool then
      visibility = visibility or 0
      ply:DrawShadow( false )
      ply:SetMaterial( "models/effects/vol_light001" )
      ply:SetRenderMode( RENDERMODE_TRANSALPHA )
      ply:Fire( "alpha", visibility, 0 )
      ply:GetTable().invis = { vis=visibility, wep=ply:GetActiveWeapon() }

      if IsValid( ply:GetActiveWeapon() ) then
         ply:GetActiveWeapon():SetRenderMode( RENDERMODE_TRANSALPHA )
         ply:GetActiveWeapon():Fire( "alpha", visibility, 0 )
         ply:GetActiveWeapon():SetMaterial( "models/effects/vol_light001" )
         if ply:GetActiveWeapon():GetClass() == "gmod_tool" then
            ply:DrawWorldModel( false ) -- tool gun has problems
         else
            ply:DrawWorldModel( true )
         end
      end

      hook.Add( "Think", "InvisThink", doInvis )
   else
      ply:DrawShadow( true )
      ply:SetMaterial( "" )
      ply:SetRenderMode( RENDERMODE_NORMAL )
      ply:Fire( "alpha", 255, 0 )
      local activeWeapon = ply:GetActiveWeapon()
      if IsValid( activeWeapon ) then
         activeWeapon:SetRenderMode( RENDERMODE_NORMAL )
         activeWeapon:Fire( "alpha", 255, 0 )
         activeWeapon:SetMaterial( "" )
      end
      ply:GetTable().invis = nil
   end
end


--[[
   Function: refreshBans

   Refreshes the ULib bans.
]]
function ULib.refreshBans()
   local err
   if not ULib.fileExists( ULib.BANS_FILE ) then
      ULib.bans = {}
   else
      ULib.bans, err = ULib.parseKeyValues( ULib.fileRead( ULib.BANS_FILE ) )
   end

   if err then
      Msg( "Bans file was not formatted correctly. Attempting to fix and backing up original\n" )
      if err then
         Msg( "Error while reading bans file was: " .. err .. "\n" )
      end
      Msg( "Original file was backed up to " .. ULib.backupFile( ULib.BANS_FILE ) .. "\n" )
      ULib.bans = {}
   end

   local default_bans = ""
   if ULib.fileExists( "cfg/banned_user.cfg" ) then
      ULib.execFile( "cfg/banned_user.cfg" )
      ULib.queueFunctionCall( game.ConsoleCommand, "writeid\n" )
      default_bans = ULib.fileRead( "cfg/banned_user.cfg" )
   end

   --default_bans = ULib.makePatternSafe( default_bans )
   default_bans = string.gsub( default_bans, "banid %d+ ", "" )
   default_bans = string.Explode( "\n", default_bans:gsub( "\r", "" ) )
   local ban_set = {}
   for _, v in pairs( default_bans ) do
      if v ~= "" then
         ban_set[ v ] = true
         if not ULib.bans[ v ] then
            ULib.bans[ v ] = { unban = 0 }
         end
      end
   end

   for k, v in pairs( ULib.bans ) do
      if type( v ) == "table" and type( k ) == "string" then
         local time = ( v.unban - os.time() ) / 60
         if time > 0 then
            game.ConsoleCommand( string.format( "banid %f %s\n", time, k ) )
         elseif math.floor( v.unban ) == 0 then -- We floor it because GM10 has floating point errors that might make it be 0.1e-20 or something dumb.
            if not ban_set[ k ] then
               ULib.bans[ k ] = nil
            end
         else
            ULib.bans[ k ] = nil
         end
      else
         Msg( "Warning: Bad ban data is being ignored, key = " .. tostring( k ) .. "\n" )
         ULib.bans[ k ] = nil
      end
   end

   -- We're queueing this because it will split the load out for VERY large ban files
   ULib.queueFunctionCall( function() ULib.fileWrite( ULib.BANS_FILE, ULib.makeKeyValues( ULib.bans ) ) end )
end
ULib.pcallError( ULib.refreshBans )


--[[
   Function: getSpawnInfo

   Grabs and returns player information that can be used to respawn player with same health/armor as before the spawn.

   Parameters:

      ply - The player to grab information for.


   Returns:

      Updates player object to store health and armor. Has no effect unless ULib.Spawn is used later.
]]
function ULib.getSpawnInfo( player )
   local result = {}

   local t = {}
   player.ULibSpawnInfo = t
   t.health = player:Health()
   t.armor = player:Armor()
   if player:GetActiveWeapon():IsValid() then
      t.curweapon = player:GetActiveWeapon():GetClass()
   end

   local weapons = player:GetWeapons()
   local data = {}
   for _, weapon in ipairs( weapons ) do
      printname = weapon:GetClass()
      data[ printname ] = {}
      data[ printname ].clip1 = weapon:Clip1()
      data[ printname ].clip2 = weapon:Clip2()
      data[ printname ].ammo1 = player:GetAmmoCount( weapon:GetPrimaryAmmoType() )
      data[ printname ].ammo2 = player:GetAmmoCount( weapon:GetSecondaryAmmoType() )
   end
   t.data = data
end

-- Helper function for ULib.spawn()
local function doWeapons( player, t )
   if not player:IsValid() then return end -- Drat, missed 'em.

   player:StripAmmo()
   player:StripWeapons()

   for printname, data in pairs( t.data ) do
      player:Give( printname )
      local weapon = player:GetWeapon( printname )
      weapon:SetClip1( data.clip1 )
      weapon:SetClip2( data.clip2 )
      player:SetAmmo( data.ammo1, weapon:GetPrimaryAmmoType() )
      player:SetAmmo( data.ammo2, weapon:GetSecondaryAmmoType() )
   end

   if t.curweapon then
      player:SelectWeapon( t.curweapon )
   end
end


--[[
   Function: spawn

   Enhanced spawn player. Can spawn player and return health/armor to status before the spawn. (Only IF ULib.getSpawnInfo was used previously.)
   Clears previously set values that were stored from ULib.getSpawnInfo.

   Parameters:

      ply - The player to grab information for.
      bool - If true, spawn will set player information to values stored using ULib.SpawnInfo

   Returns:

      Spawns player. Sets health/armor to stored defaults if ULib.getSpawnInfo was used previously. Clears SpawnInfo table afterwards.
]]
function ULib.spawn( player, bool )
   player:Spawn()

   if bool and player.ULibSpawnInfo then
      local t = player.ULibSpawnInfo
      player:SetHealth( t.health )
      player:SetArmor( t.armor )
      timer.Simple( 0.1, function() doWeapons( player, t ) end )
      player.ULibSpawnInfo = nil
   end
end

Offline Kerdizoume

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
Re: Sourcebans & ULX/ULib
« Reply #131 on: July 15, 2014, 01:39:57 PM »
Hey. I just spent this morning setting this up for my 2 servers. Everything seemed to be working, but when I did a test ban, it said (CONSOLE) banned him on TF2. Anyone else with a similar problem? I can't seem to find what's wrong...

Also, when I ban in-game and then unban via the web panel it doesn't work.

Offline Avoid

  • Full Member
  • ***
  • Posts: 142
  • Karma: 42
Re: Sourcebans & ULX/ULib
« Reply #132 on: July 15, 2014, 04:35:53 PM »
Hello,
this bug has been fixed in the newest version of ULX/ULib, so make sure you are running it aswell! :)

To SourceBans: I managed to get it working with this module found on FP here.

Hope I helped you, Avoid!

Offline Storm

  • Full Member
  • ***
  • Posts: 220
  • Karma: 4
Re: Sourcebans & ULX/ULib
« Reply #133 on: July 16, 2014, 06:21:10 AM »
Avoid, if you got the fp version working, can I ask you a question? It says that ulx sb addon isn't supporting sb 2.0 and when I installed the 1.411 version it automatically updated to 2.0. The server.cfg needs to be changed, as stated there, to include the server id number. What I can see is 2.0 doesn't have a server id number. Did you have this problem? Thanks if you can help!

Offline Avoid

  • Full Member
  • ***
  • Posts: 142
  • Karma: 42
Re: Sourcebans & ULX/ULib
« Reply #134 on: July 16, 2014, 07:58:55 AM »
Avoid, if you got the fp version working, can I ask you a question? It says that ulx sb addon isn't supporting sb 2.0 and when I installed the 1.411 version it automatically updated to 2.0. The server.cfg needs to be changed, as stated there, to include the server id number. What I can see is 2.0 doesn't have a server id number. Did you have this problem? Thanks if you can help!
That is weird, Sbans did not update to 2.0 for me, so I sticked to version 1.4.11 and it just works fine.
You could try downloading the version 1.4.11 and see if that does the trick for you!

Avoid