Raised This Month: $51 Target: $400
 12% 

set_user_flags &


Post New Thread Reply   
 
Thread Tools Display Modes
yagami
Senior Member
Join Date: Jan 2021
Old 08-05-2023 , 09:18   Re: set_user_flags &
Reply With Quote #11

Quote:
Originally Posted by lexzor View Post
Code:
#include <amxmodx> #include <amxmisc> #include <csstats> #define VIP_FLAG "bst" #define SET_FLAG(%0) (set_user_flags(%0, read_flags(VIP_FLAG))) #define REMOVE_FLAG(%1) (remove_user_flags(%1, read_flags(VIP_FLAG))) static const RANK_TO_RETRIEVE = 10 enum OBJECTIVES {     TOTAL_DEFUSIONS ,     BOMBS_DEFUSED,     BOMBS_PLANTED,     BOMB_EXPLOSIONS, } static const OBJECTIVES_NAMES[OBJECTIVES][] = {     "Total defusion:",     "Total bomb defused:",     "Total bomb planted:",     "Total bomb explosions:", } new bool:g_bIsVIP[MAX_PLAYERS + 1] public plugin_init() {     //start task     set_task(60.0, "FindPlayers", .flags = "b") } public FindPlayers() {     new     iRank = 0,             szAuthID[64],             iObjectives[STATSX_MAX_OBJECTIVE],             szOutput[192],             iLen     new  iPlayers[MAX_PLAYERS], iNum     get_players(iPlayers, iNum, "ch")     //remove flags for everyone     for(new i, iPlayer; i < iNum; i++)     {         iPlayer = iPlayers[i]             if(g_bIsVIP[iPlayer] && !is_user_admin(iPlayer))         {             server_print("User %n is not a VIP anymore", iPlayer)             g_bIsVIP[iPlayer] = false;                     REMOVE_FLAG(iPlayer)         }     }     //get stats by rank num and check if user is connected     do {         get_stats2(iRank, iObjectives, szAuthID, charsmax(szAuthID))         iLen = formatex(szOutput, charsmax(szOutput), "%i. %s ", iRank, szAuthID )         for(new OBJECTIVES:iObjNum = TOTAL_DEFUSIONS; iObjNum < OBJECTIVES; iObjNum++)         {             iLen += formatex(szOutput[iLen], charsmax(szOutput), ", %s %i", OBJECTIVES_NAMES[iObjNum], iObjectives[_:iObjNum])         }         server_print("%s", szOutput)         //check user func         CheckUser(szAuthID)                 iRank++     }     while (iRank <= RANK_TO_RETRIEVE) } CheckUser(const auth[]) {     new id = find_player_ex(FindPlayer_MatchAuthId, auth)     //if user is online, set flags     if(id && !is_user_admin(id))     {         SET_FLAG(id)         g_bIsVIP[id] = true         server_print("User %n is now a VIP!", id)     } } public client_connect(id) {     g_bIsVIP[id] = false }

next time post your code in a way people can actually compile it

nobody will spend time to resolve your code if you don't bother yourself to give a compilable version

The full code is here

PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <cellarray>
#include <fvault>
#include <hamsandwich>
#include <wm_play>
#include <csstats>
#include <jctf>

#define TASKID_WARN_PRUNE 10099
#define LOG "log.log"

#define PLUGIN  "Top 15 bandeiras"
#define VERSION "1.3"
#define AUTHOR "Cold"

#define PREFIX_CHAT "^4«Express»^1 "

enum _:xFvaultData
{
    
xAuthId[64],
    
xDataTop[128]
}

enum _:PlayerData
{
    
pl_szAuthid[MAX_AUTHID_LENGTH],
}

enum _:xMaxCvars
{
    
CVAR_LIST_RANK_TYPE,
    
CVAR_TOP15_SHOW_AMOUNT,
    
CVAR_MOTD_CSS,
    
CVAR_PRUNE,
    
CVAR_PREFIXCHAT,
    
CVAR_FULL_TO_SHOW,
    
CVAR_MIN_PLAYERS,
    
CVAR_VIP_PLAYER,
    
CVAR_FLAGS_GIVE[12]
}

new 
xCvars[xMaxCvars]
new 
xFlagDelivery[33], xFlagCapturated[33], xFlagRecuperated[33], xMotd[2000],  Player[MAX_PLAYERS 1][PlayerData];
new 
bool:g_bTop[33], bool:isAdmin[33]
new 
szLeFlags[32]

new 
db_top15_data[] = "db_top15_flags"

public plugin_init()
{
    
register_plugin(PLUGINAUTHORVERSION)
    
    
xCvars[CVAR_TOP15_SHOW_AMOUNT] = create_cvar("csr_top15f_show_amount""10", .has_min true, .min_val 5.0, .has_max true, .max_val 15.0)
    
xCvars[CVAR_PRUNE] = create_cvar("csr_top15f_prune_days""0")            // Tempo Ate Rank Reseta 
    
xCvars[CVAR_FULL_TO_SHOW] = create_cvar("csr_top15f_full_to_show""0"// Shows MODT only complete  
    
xCvars[CVAR_MIN_PLAYERS] = create_cvar("csr_top15f_min_players""0")    // Minimum number of players for the ranking to be activated 
    
xCvars[CVAR_VIP_PLAYER] = create_cvar("cx_vip_players""1")            // How much player rank can be VIP 
    
xCvars[CVAR_FLAGS_GIVE] = create_cvar("cx_vip_flags_give""bst")        // Which VIP Flags do you receive 
    

    
set_task(60.0"CheckPlayerRank", .flags "b")    


    
register_clcmd("amx_resetflag""xResetTop15")

    
xRegisterSay("topflag""xShowMotdTop")    
    
xRegisterSay("topflag""xShowMotdTop")
    
xRegisterSay("topb""xShowMotdTop")
    
xRegisterSay("pbtop""xShowMotdTop")
    
xRegisterSay("rankpb""xSkillTop")
    
xRegisterSay("rankb""xSkillTop")
    
xRegisterSay("pbrank""xSkillTop")
}


public 
xResetTop15(id)
{
    if(!(
get_user_flags(id) && ADMIN_CFG))
    {
        
console_print(id"Voce nao tem acesso a este comando!")
        return 
PLUGIN_HANDLED
    
}

    
fvault_clear(db_top15_data)

    new 
i
    
for(1<= MaxClientsi++)
    {
        
xFlagDelivery[i] = 0
        xFlagRecuperated
[i] = 0
        xFlagCapturated
[i] = 0
    
}

    
console_print(id"***********************************")
    
console_print(id"-> TOP15 ZERADO !!!")
    
console_print(id"-> TOP15 ZERADO !!!")
    
console_print(id"-> TOP15 ZERADO !!!")
    
console_print(id"***********************************")

    return 
PLUGIN_HANDLED
}

public 
xSkillTop(id)
{
        
client_print_color(idprint_team_default"%s ^1Sua posição é: ^4%s ^1de ^4%s ^1com ^4%s ^1bandeiras entregues."PREFIX_CHATxAddPoint(xNtvGetUserPosTop(id)), xAddPoint(xNtvGetTotalTop()), xAddPoint(xFlagDelivery[id]))        
}

public 
plugin_cfg()
{
    if(
get_pcvar_num(xCvars[CVAR_PRUNE]))
    {
        new 
prune_t15days get_systime() - (get_pcvar_num(xCvars[CVAR_PRUNE]) * 24 60 60)

        
fvault_prune(db_top15_data_prune_t15days)
    }
}

public 
client_disconnected(id)
{


    
Player[id][pl_szAuthid][0] = 0;
    
xFlagDelivery[id] = false
    xFlagCapturated
[id] = false
    xFlagRecuperated
[id] = false

    xSaveData
(id);
}

public 
client_putinserver(id)
{
    if(
is_user_admin(id))
        
isAdmin[id] = true

    g_bTop
[id] = false

    
if(!Player[id][pl_szAuthid][0])
    {
        
set_task(1.5"client_putinserver"id);
    }
    
get_flags(get_user_flags(id), szLeFlagscharsmax(szLeFlags));
    
//server_print("Player (%d) Flags: %s", id, szLeFlags);/*skill issue*/
    
    
set_task(4.0"CheckPlayerRank"id)
    
set_task(1.0"xSaveData"id__"b")
    
xLoadData(id)
}

public 
client_authorized(id, const authid[])
{
    
copy(Player[id][pl_szAuthid], charsmax(Player[][pl_szAuthid]), authid);
}

public 
CheckPlayerRank(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_HANDLED

    
// SET VIP ACESS
    
new szFlags[64
    
get_pcvar_string(xCvars[CVAR_FLAGS_GIVE], szFlags63)

    new 
g_Flag_ziFlag_Vip

    g_Flag_z 
read_flags("z")
    
remove_user_flags(idg_Flag_z)

    
iFlag_Vip read_flags(szFlags)
    
set_user_flags(idiFlag_Vip)

    new 
iStats[8], iBodyHits[8], iRankszName[MAX_NAME_LENGTH]
    

    new 
iPlayers[MAX_PLAYERS], iNum
    get_players
(iPlayersiNum"chi")


    for(new 
0iPlayeriNumi++)
    {
        
iPlayer iPlayers[i]

        if(!
is_user_connected(iPlayer))
            continue;

        if(
<= iRank <= get_pcvar_num(xCvars[CVAR_VIP_PLAYER]))
        {
            
get_user_name(iPlayerszNamecharsmax(szName))

            if(!
g_bTop[iPlayer])
            {
                if(
get_user_flags(iPlayer) & ADMIN_USER)
                {
                    
remove_user_flags(iPlayerADMIN_USER)
                }
                
server_print("Do %s have the flags? [%s]"szName,bool:(get_user_flags(iPlayer) & read_flags(szFlags)) ? "Yes" "No")
            }
            else if(
g_bTop[iPlayer])
            {

            }
        }
        else 
        {
            
server_print("User %s is already top"szName)
        }
        
iRank get_user_stats(idiStatsiBodyHits)
    }
    return 
PLUGIN_HANDLED
}

public 
jctf_flag(iEventidiFlagTeambool:bAssist)
{
    switch(
iEvent)
    {
        case 
FLAG_RETURNED:
        {
            if(!
bAssist)
            {
                
xFlagRecuperated [id]++
            }
        }
        case 
FLAG_CAPTURED:
        {
            if(!
bAssist)
            {
                
xFlagCapturated [id]++
            }
        }
        case 
FLAG_STOLEN:
        {
            if(!
bAssist)
            {
                
xFlagDelivery [id]++
            }
        }
    }
}

public 
xNtvFilter(const name[], indextrap)
{
    if(!
trap)
        return 
PLUGIN_HANDLED
        
    
return PLUGIN_CONTINUE
}

public 
xSaveData(id)
{
    if(
get_playersnum(1) < get_pcvar_num(xCvars[CVAR_MIN_PLAYERS])  || is_user_alive(id))
        return 
PLUGIN_HANDLED

    
if(is_user_bot(id) || is_user_hltv(id) || !Player[id][pl_szAuthid][0]) return PLUGIN_HANDLED;
    {
        static 
xData[500], xUserName[32]
    
        
get_user_name(idxUserNamecharsmax(xUserName))

        
formatex(xDatacharsmax(xData), "%d %d %d ^"%s^""xFlagDelivery[id], xFlagRecuperated[id], xFlagCapturated[id], xUserName)
        
fvault_set_data(db_top15_dataPlayer[id][pl_szAuthid], xData
        
    }

    return 
PLUGIN_CONTINUE
}


public 
xLoadData(id)
{
    if(
is_user_bot(id) || is_user_hltv(id)) return PLUGIN_HANDLED;

    static 
xData[500]
    static 
xEnt[10], xRc[10], xCap[10], xIgnoreCase[32]


    if(
fvault_get_data(db_top15_dataPlayer[id][pl_szAuthid], xDatacharsmax(xData)))
    {
        
parse(xDataxEntcharsmax(xEnt), xRccharsmax(xRc), xCapcharsmax(xCap), xIgnoreCasecharsmax(xIgnoreCase))

        
xFlagDelivery[id] = str_to_num(xEnt)
        
xFlagRecuperated[id] = str_to_num(xRc)
        
xFlagCapturated[id] = str_to_num(xCap)
    }

    
set_task(35.0"xWarnTopPrune"id+TASKID_WARN_PRUNE__"a"2)

    
xSaveData(id)

    return 
PLUGIN_CONTINUE
}

public 
xWarnTopPrune(id)
{
    
id -= TASKID_WARN_PRUNE;

    if(!
is_user_connected(id))
    {
        
remove_task(id+TASKID_WARN_PRUNE)
        return
    }

    
client_print_color(idprint_team_default"%s ^4A^3T^4E^3N^4Ç^3Ã^4O ^3Não entrar no servidor por ^4%d ^1dias ^3seu rank de facas será resetado automaticamente."PREFIX_CHATget_pcvar_num(xCvars[CVAR_PRUNE]))
}

public 
xShowMotdTop(id)
{
    
xMotd[0] = EOS

    xMakeTop15
(id)

    new 
xxx[52]
    
formatex(xxxcharsmax(xxx), "TOP %d BANDEIRAS"get_pcvar_num(xCvars[CVAR_TOP15_SHOW_AMOUNT]))

    
show_motd(idxMotdxxx)
}

public 
xMakeTop15(id)
{
    new 
xLen 0

    
if(xNtvGetTotalTop() < 15 && get_pcvar_num(xCvars[CVAR_FULL_TO_SHOW]))
    {
        
xLen formatex(xMotdcharsmax(xMotd), "<html><head><meta charset=^"UTF-8^"><style>*{margin:0px;}body{background:#000;color:#D53D04;font-family:Arial;font-size:30px;margin-top:25px;}</style></head>")
        
xLen += formatex(xMotd[xLen], charsmax(xMotd)-xLen"<body><center>O TOP10 ainda não está completo.<br>Aguarde....</center>")
        
xLen += formatex(xMotd[xLen], charsmax(xMotd)-xLen"</table></body></html>")
        return
    }

    
xLen formatex(xMotdcharsmax(xMotd), "<html><head><meta charset=^"UTF-8^"><link rel=stylesheet href=topbandeira.css></head>")

    
xLen += formatex(xMotd[xLen], charsmax(xMotd)-xLen"<body><table><tr id='c'><th>#</th><th>Jogador</th><th>Entregues</th><th>Recuperadas</th><th>Capturadas</th></tr>")

    new Array:
aKey ArrayCreate(64)
    new Array:
aData ArrayCreate(128)
    new Array:
aAll ArrayCreate(xFvaultData)
    
    
fvault_load(db_top15_dataaKeyaData)
    
    new 
iArraySize ArraySize(aKey)
    
    new 
ixEnt[10], xRc[10], xCap[10], xName[22], Data[xFvaultData]

    for(
0iArraySizei++)
    {
        
ArrayGetString(aKeyiData[xAuthId], charsmax(Data[xAuthId]))
        
ArrayGetString(aDataiData[xDataTop], charsmax(Data[xDataTop]))
        
        
ArrayPushArray(aAllData)
    }
    
    
ArraySort(aAll"xSortData")

    
//new xMaxColors = sizeof(xTopColors)

    
new iSize clamp(iArraySize0get_pcvar_num(xCvars[CVAR_TOP15_SHOW_AMOUNT]))

    for(
0iSizei++)
    {
        
ArrayGetArray(aAlliData)
        
        
fvault_get_data(db_top15_dataData[xAuthId], Data[xDataTop], charsmax(Data[xDataTop]))
        
        
parse(Data[xDataTop], xEntcharsmax(xEnt), xRccharsmax(xRc), xCapcharsmax(xCap), xNamecharsmax(xName))
        
        
replace_all(xNamecharsmax(xName), "<""[")
        
replace_all(xNamecharsmax(xName), ">""]")

        
xLen += formatex(xMotd[xLen], charsmax(xMotd)-xLen"<tr id='a'><td>%d</td><td id='b'>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>"1xName,
        
xAddPoint(str_to_num(xEnt)), xAddPoint(str_to_num(xRc)), xAddPoint(str_to_num(xCap)) )

    }

    static 
xNName[32]; get_user_name(idxNNamecharsmax(xNName))

    
/*if(xNtvGetUserPosTop(id) > 10)
    {
        xLen += formatex(xMotd[xLen], charsmax(xMotd)-xLen, "<tr style=color:#00ff00><td>Meu rank: %d<td>%s<td>%s<td>%s<td>%s", xNtvGetUserPosTop(id), xNName, xAddPoint(xFlagDelivery[id]), xAddPoint(xFlagRecuperated[id]), xAddPoint(xFlagCapturated[id]))
    }
    else
    {
        xLen += formatex(xMotd[xLen], charsmax(xMotd)-xLen, "<tr style=color:#00ff00><td>Meu rank: <td>%s<td>0", xNName)
    }*/

    
xLen += formatex(xMotd[xLen], charsmax(xMotd)-xLen"</table></body></html>")

    
ArrayDestroy(aKey)
    
ArrayDestroy(aData)
    
ArrayDestroy(aAll)
}

public 
xSortData(Array:aArrayiItem1iItem2iData[], iDataSize)
{
    new 
Data1[xFvaultData]
    new 
Data2[xFvaultData]
    
    
ArrayGetArray(aArrayiItem1Data1)
    
ArrayGetArray(aArrayiItem2Data2)
    
    new 
iCount1iCount2xStrKillsxStrKills2

    
new xK[10]
    
parse(Data1[xDataTop], xKcharsmax(xK))

    
xStrKills str_to_num(xK)

    new 
xK2[10]
    
parse(Data2[xDataTop], xK2charsmax(xK2))

    
xStrKills2 str_to_num(xK2)

    
    
iCount1 xStrKills
    iCount2 
xStrKills2
    
    
return (iCount1 iCount2) ? -: ( (iCount1 iCount2) ? )
}

public 
xNtvGetUserPosTop(id)
{
    if(!
is_user_connected(id))
        return 
false

    
new Array:aKey ArrayCreate(35)
    new Array:
aData ArrayCreate(128)
    new Array:
aAll ArrayCreate(xFvaultData)
    
    
fvault_load(db_top15_dataaKeyaData)
    
    new 
iArraySize ArraySize(aKey)
    new 
Data[xFvaultData]

    new 
i
    
for(0iArraySizei++)
    {
        
ArrayGetString(aKeyiData[xAuthId], charsmax(Data[xAuthId]))
        
ArrayGetString(aDataiData[xDataTop], charsmax(Data[xDataTop]))
        
        
ArrayPushArray(aAllData)
    }
    
    
ArraySort(aAll"xSortData")

    new 
szAuthIdFromArray[64]

    static 
xGetAuth[64]
    
get_user_authid(idxGetAuthcharsmax(xGetAuth))

    new 
j
    
for(0iArraySizej++)
    {
        
ArrayGetString(aAlljszAuthIdFromArraycharsmax(szAuthIdFromArray))
        
        if(
equal(szAuthIdFromArrayxGetAuth))
            break;
    }
    
    
ArrayDestroy(aKey)
    
ArrayDestroy(aData)
    
ArrayDestroy(aAll)

    return 
j+1
}

public 
xNtvGetTotalTop()
{
    return 
fvault_size(db_top15_data)
}

public 
client_infochanged(id)
{
    new 
iPlayerName[32], iNewName[32]
    
get_user_name(idiPlayerName31)
    
get_user_info(id"name"iNewName31)
    if(!
equali(iNewNameiPlayerName))
        
set_task(1.0"CheckPlayerRank"id)
}
stock xRegisterSayszSay[], szFunction[])
{
    new 
szTemp64 ];
    
formatexszTemp63 "say /%s"szSay );
    
register_clcmdszTempszFunction );
    
    
formatexszTemp63 "say .%s"szSay );
    
register_clcmdszTempszFunction );
    
    
formatexszTemp63 "say_team /%s"szSay );
    
register_clcmdszTempszFunction );
    
    
formatexszTemp63 "say_team .%s"szSay );
    
register_clcmdszTempszFunction );
}


stock xAddPoint(number)
{
    new 
countistr[29], str2[35], len
    num_to_str
(numberstrcharsmax(str))
    
len strlen(str)

    for (
0leni++)
    {
        if(
!= && ((len i) %== 0))
        {
            
add(str2charsmax(str2), "."1)
            
count++
            
add(str2[i+count], 1str[i], 1)
        }
        else 
add(str2[i+count], 1str[i], 1)
    }
    
    return 
str2

HTML Code:
body {
    background-repeat: no-repeat;
    background-size: cover;
    background-image: url('../img/background-knife.jpg');
    background-attachment: fixed;
}

table {
    width: 100%;
    color: white;
    background: rgba(6, 6, 6, 0.58);
}

td {
    text-shadow: 0px 1px 3px black;
    text-align: center;
    color: #bfb7b7;
}

th {
    color: #5ad37f;
}

th:first-child, td:first-child {
    max-width: 20px;
}

/* linha de número par */
#a {
    background: rgba(0, 0, 0, 0.2)
}

/* nome do jogador */
#b {
    padding-left: 10px;
    text-align: left;
    color: #fff;
}

/* cabeçalho da tabela */
#c {
    height: 30px;
    background: rgba(93, 94, 105, 0.4);
}

/* linha dedicada as estatÃ*ticas de quem está vendo
 * o MOTD e se ele próprio estiver na lista */
#f {
    background: rgba(147, 201, 208, 0.2)
}

/* Ã*cone do kit de desarmamento */
#d {
    background-image: url('../img/faca6.png');
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
}

/* Ã*cone da c4 */
#e {
    background-image: url('../img/faca12.png');
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
}

/* nÃ*veis de habilidade */
    #za {
        background-image: url('../img/skills/skillgroup0.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zb {
        background-image: url('../img/skills/skillgroup1.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zc {
        background-image: url('../img/skills/skillgroup2.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zd {
        background-image: url('../img/skills/skillgroup3.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #ze {
        background-image: url('../img/skills/skillgroup4.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zf {
        background-image: url('../img/skills/skillgroup5.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zg {
        background-image: url('../img/skills/skillgroup6.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zh {
        background-image: url('../img/skills/skillgroup7.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zi {
        background-image: url('../img/skills/skillgroup8.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zj {
        background-image: url('../img/skills/skillgroup9.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zk {
        background-image: url('../img/skills/skillgroup10.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zl {
        background-image: url('../img/skills/skillgroup11.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zm {
        background-image: url('../img/skills/skillgroup12.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zn {
        background-image: url('../img/skills/skillgroup13.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zo {
        background-image: url('../img/skills/skillgroup14.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zp {
        background-image: url('../img/skills/skillgroup15.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zq {
        background-image: url('../img/skills/skillgroup16.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zr {
        background-image: url('../img/skills/skillgroup17.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

    #zr {
        background-image: url('../img/skills/skillgroup18.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        max-width: 30px;
    }

Last edited by yagami; 08-05-2023 at 09:24. Reason: css
yagami is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 08:21.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode