As far as I know, there's no simple workaround for this. If anything, I'm fairly certain you'd need to edit the actual code of APromote, especially around this area:
local function checkPlayer( ply )
local plyhours = math.floor( ply:GetUTimeTotalTime() / 3600 )
local usrgrp = ply:GetUserGroup()
local Rank = ""
local Hours = 0
for k, v in pairs( APromote["grp"] ) do
if plyhours >= tonumber( v ) and tonumber( v ) >= Hours then
if tonumber( v ) >= 0 then
Rank = k
Hours = tonumber( v )
end
end
end
if (!ply:IsUserGroup(Rank) and Rank != "") then
if tonumber( APromote["grp"][usrgrp]) != -1 then
if not tobool( GetConVarNumber( "ap_auto_demote" ) ) and APromote["grp"][usrgrp] != nil
and Hours < tonumber( APromote["grp"][usrgrp] ) then
return
else
if ply:IsConnected() then
RunConsoleCommand( "ulx", "adduserid", ply:SteamID(), Rank )
PlayRankSound( ply )
end
end
end
end
end
timer.Create("doAPUpdateTimer", 10, 0, function()
if not tobool( GetConVarNumber( "ap_enabled" ) ) then return end
for k, v in pairs( player.GetAll() ) do
if (v:IsPlayer() and v:IsValid() and !v:IsBot()) then
ULib.queueFunctionCall( checkPlayer, v )
end
end
end)
However, I'm not sure how to capture if a person is that rank and been demoted, or if they've never had that rank before. There may be some internal function that captures these changes, but I'm not sure.
Just realized I'm not really being helpful here, but I really am not sure as this was written a couple years ago, and not sure when it was last updated...
EDIT: There's probably a really convulted way of doing this... and just manually adding in a
if ply:SteamID() == "the steam id you don't want to be promoted" then return end
but you'd need to do that for a lot of them if it happens...
Another way, that's not a very good idea as it messes with core files, is edit the 'removeuser' command to add like do something like
SetPData( "repromote", "false" )
so then you could edit the APromote to be
if ply:GetPData( "repromote" ) == "false" then return end
which is a much easier way, but not a very good one because next ULX update you'd need to do it again and you're editing core files which is never a good idea.