Raised This Month: $ Target: $400
 0% 

[Help] admin sma edits


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
plazma
Senior Member
Join Date: Oct 2013
Old 08-14-2014 , 20:08   [Help] admin sma edits
Reply With Quote #1

I need your help, I can't make ADMIN TAG modification in admin.sma but I'm not good scripter more explain:

In file users.ini

"STEAM_0:0:123456" "" "abcdefghijklmnopqrstu" "ce" "TAG ADMIN" ;(can edit by admins like a player)
"123.45.67.89" "" "abcdefghijklmnopqrstu" "de" "TAG ADMIN" ;(can edit by admins like a player)
"name" "password" "abcdefghijklmnopqrstu" "a" "TAG ADMIN" ;(can edit by admins like a player)

(tag admin - team name admin - chat color normal )
[TAG ADMIN] plazma say: tag admin test


thank all for helps..

PHP Code:
#include <amxmodx>
#include <amxmisc>
#if defined USING_SQL
#include <sqlx>
#endif

//new Vector:AdminList;

new AdminCount;

new 
PLUGINNAME[] = "AMX Mod X"

#define ADMIN_LOOKUP    (1<<0)
#define ADMIN_NORMAL    (1<<1)
#define ADMIN_STEAM        (1<<2)
#define ADMIN_IPADDR    (1<<3)
#define ADMIN_NAME        (1<<4)

new g_cmdLoopback[16]
new 
bool:g_CaseSensitiveName[33];

// pcvars
new amx_mode;
new 
amx_password_field;
new 
amx_default_access;

public 
plugin_init()
{
#if defined USING_SQL
    
register_plugin("Admin Base (SQL)"AMXX_VERSION_STR"AMXX Dev Team")
#else
    
register_plugin("Admin Base"AMXX_VERSION_STR"AMXX Dev Team")
#endif
    
register_dictionary("admin.txt")
    
register_dictionary("common.txt")
    
amx_mode=register_cvar("amx_mode""1")
    
amx_password_field=register_cvar("amx_password_field""_pw")
    
amx_default_access=register_cvar("amx_default_access""")

    
register_cvar("amx_vote_ratio""0.02")
    
register_cvar("amx_vote_time""10")
    
register_cvar("amx_vote_answers""1")
    
register_cvar("amx_vote_delay""60")
    
register_cvar("amx_last_voting""0")
    
register_cvar("amx_show_activity""2")
    
register_cvar("amx_votekick_ratio""0.40")
    
register_cvar("amx_voteban_ratio""0.40")
    
register_cvar("amx_votemap_ratio""0.40")

    
set_cvar_float("amx_last_voting"0.0)

#if defined USING_SQL
    
register_srvcmd("amx_sqladmins""adminSql")
    
register_cvar("amx_sql_table""admins")
#endif
    
register_cvar("amx_sql_host""127.0.0.1")
    
register_cvar("amx_sql_user""root")
    
register_cvar("amx_sql_pass""")
    
register_cvar("amx_sql_db""amx")
    
register_cvar("amx_sql_type""mysql")

    
register_concmd("amx_reloadadmins""cmdReload"ADMIN_CFG)
    
register_concmd("amx_addadmin""addadminfn"ADMIN_RCON"<playername|auth> <accessflags> [password] [authtype] - add specified player as an admin to users.ini")

    
format(g_cmdLoopback15"amxauth%c%c%c%c"random_num('A''Z'), random_num('A''Z'), random_num('A''Z'), random_num('A''Z'))

    
register_clcmd(g_cmdLoopback"ackSignal")

    
remove_user_flags(0read_flags("z"))        // Remove 'user' flag from server rights

    
new configsDir[64]
    
get_configsdir(configsDir63)
    
    
server_cmd("exec %s/amxx.cfg"configsDir)    // Execute main configuration file
    
server_cmd("exec %s/sql.cfg"configsDir)

    
// Create a vector of 5 cells to store the info.
    //AdminList=vector_create(5);

    
#if defined USING_SQL
    
server_cmd("amx_sqladmins")
#else
    
format(configsDir63"%s/users.ini"configsDir)
    
loadSettings(configsDir)                    // Load admins accounts
#endif
}
public 
client_connect(id)
{
    
g_CaseSensitiveName[id] = false;
}
public 
addadminfn(idlevelcid)
{
    if (!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED
        
    
new idtype ADMIN_STEAM ADMIN_LOOKUP

    
if (read_argc() >= 5)
    {
        new 
t_arg[16]
        
read_argv(4t_arg15)
        
        if (
equali(t_arg"steam") || equali(t_arg"steamid") || equali(t_arg"auth"))
        {
            
idtype ADMIN_STEAM
        
}
        else if (
equali(t_arg"ip"))
        {
            
idtype ADMIN_IPADDR
        
}
        else if (
equali(t_arg"name") || equali(t_arg"nick"))
        {
            
idtype ADMIN_NAME
            
            
if (equali(t_arg"name"))
                
idtype |= ADMIN_LOOKUP
        
} else {
            
console_print(id"[%s] Unknown id type ^"%s^", use one of: steamid, ip, name"PLUGINNAMEt_arg)
            return 
PLUGIN_HANDLED
        
}
    }

    new 
arg[33]
    
read_argv(1arg32)
    new 
player = -1
    
    
if (idtype ADMIN_STEAM)
    {
        if (
containi(arg"STEAM_0:") == -1)
        {
            
idtype |= ADMIN_LOOKUP
            player 
cmd_target(idargCMDTARGET_ALLOW_SELF CMDTARGET_NO_BOTS)
        } else {
            new 
_steamid[44]
            static 
_players[32], _num_pv
            get_players
(_players_num)
            for (new 
_i=0_i<_num_i++)
            {
                
_pv _players[_i]
                
get_user_authid(_pv_steamidsizeof(_steamid)-1)
                if (!
_steamid[0])
                    continue
                if (
equal(_steamidarg))
                {
                    
player _pv
                    
break
                }
            }    
            if (
player 1)
            {
                
idtype &= ~ADMIN_LOOKUP
            
}        
        }
    }
    else if (
idtype ADMIN_NAME)
    {
        
player cmd_target(idargCMDTARGET_ALLOW_SELF CMDTARGET_NO_BOTS)
        
        if (
player)
            
idtype |= ADMIN_LOOKUP
        
else
            
idtype &= ~ADMIN_LOOKUP
    
}
    else if (
idtype ADMIN_IPADDR)
    {
        new 
len strlen(arg)
        new 
dotschars
        
        
for (new 0leni++)
        {
            if (
arg[i] == '.')
            {
                if (!
chars || chars 3)
                    break
                
                if (++
dots 3)
                    break
                
                
chars 0
            
} else {
                
chars++
            }
            
            if (
dots != || !chars || chars 3)
            {
                
idtype |= ADMIN_LOOKUP
                player 
find_player("dh"arg)
            }
        }
    }
    
    if (
idtype ADMIN_LOOKUP && !player)
    {
        
console_print(id"%L"id"CL_NOT_FOUND")
        return 
PLUGIN_HANDLED
    
}
    
    new 
flags[64]
    
read_argv(2flags63)

    new 
password[64]
    if (
read_argc() >= 4)
        
read_argv(3password63)

    new 
auth[33]
    new 
Comment[33]; // name of player to pass to comment field
    
if (idtype ADMIN_LOOKUP)
    {
        
get_user_name(playerCommentsizeof(Comment)-1)
        if (
idtype ADMIN_STEAM)
        {
            
get_user_authid(playerauth32)
        }
        else if (
idtype ADMIN_IPADDR)
        {
            
get_user_ip(playerauth32)
        }
        else if (
idtype ADMIN_NAME)
        {
            
get_user_name(playerauth32)
        }
    } else {
        
copy(auth32arg)
    }
    
    new 
type[16], len
    
    
if (idtype ADMIN_STEAM)
        
len += format(type[len], 15-len"c")
    else if (
idtype ADMIN_IPADDR)
        
len += format(type[len], 15-len"d")
    
    if (
strlen(password) > 0)
        
len += format(type[len], 15-len"a")
    else
        
len += format(type[len], 15-len"e")
    
    
AddAdmin(idauthflagspasswordtypeComment)
    
cmdReload(idADMIN_CFG0)

    if (
player 0)
    {
        new 
name[32]
        
get_user_info(player"name"name31)
        
accessUser(playername)
    }

    return 
PLUGIN_HANDLED
}

AddAdmin(idauth[], accessflags[], password[], flags[], comment[]="")
{
#if defined USING_SQL
    
new error[128], errno

    
new Handle:info SQL_MakeStdTuple()
    new 
Handle:sql SQL_Connect(infoerrnoerror127)
    
    if (
sql == Empty_Handle)
    {
        
server_print("[AMXX] %L"LANG_SERVER"SQL_CANT_CON"error)
        
//backup to users.ini
#endif
        // Make sure that the users.ini file exists.
        
new configsDir[64]
        
get_configsdir(configsDir63)
        
format(configsDir63"%s/users.ini"configsDir)

        if (!
file_exists(configsDir))
        {
            
console_print(id"[%s] File ^"%s^" doesn't exist."PLUGINNAMEconfigsDir)
            return
        }

        
// Make sure steamid isn't already in file.
        
new line 0textline[256], len
        
const SIZE 63
        
new line_steamid[SIZE 1], line_password[SIZE 1], line_accessflags[SIZE 1], line_flags[SIZE 1], parsedParams
        
        
// <name|ip|steamid> <password> <access flags> <account flags>
        
while ((line read_file(configsDirlinetextline255len)))
        {
            if (
len == || equal(textline";"1))
                continue 
// comment line

            
parsedParams parse(textlineline_steamidSIZEline_passwordSIZEline_accessflagsSIZEline_flagsSIZE)
            
            if (
parsedParams != 4)
                continue    
// Send warning/error?
            
            
if (containi(line_flagsflags) != -&& equal(line_steamidauth))
            {
                
console_print(id"[%s] %s already exists!"PLUGINNAMEauth)
                return
            }
        }

        
// If we came here, steamid doesn't exist in users.ini. Add it.
        
new linetoadd[512]
        
        if (
comment[0]==0)
        {
            
formatex(linetoadd511"^r^n^"%s^" ^"%s^" ^"%s^" ^"%s^""authpasswordaccessflagsflags)
        }
        else
        {
            
formatex(linetoadd511"^r^n^"%s^" ^"%s^" ^"%s^" ^"%s^" ; %s"authpasswordaccessflagsflagscomment)
        }
        
console_print(id"Adding:^n%s"linetoadd)

        if (!
write_file(configsDirlinetoadd))
            
console_print(id"[%s] Failed writing to %s!"PLUGINNAMEconfigsDir)
#if defined USING_SQL
    
}
    
    new 
table[32]
    
    
get_cvar_string("amx_sql_table"table31)
    
    new 
Handle:query SQL_PrepareQuery(sql"SELECT * FROM `%s` WHERE (`auth` = '%s')"tableauth)

    if (!
SQL_Execute(query))
    {
        
SQL_QueryError(queryerror127)
        
server_print("[AMXX] %L"LANG_SERVER"SQL_CANT_LOAD_ADMINS"error)
        
console_print(id"[AMXX] %L"LANG_SERVER"SQL_CANT_LOAD_ADMINS"error)
    } else if (
SQL_NumResults(query)) {
        
console_print(id"[%s] %s already exists!"PLUGINNAMEauth)
    } else {
        
console_print(id"Adding to database:^n^"%s^" ^"%s^" ^"%s^" ^"%s^""authpasswordaccessflagsflags)
    
        
SQL_QueryAndIgnore(sql"REPLACE INTO `%s` (`auth`, `password`, `access`, `flags`) VALUES ('%s', '%s', '%s', '%s')"tableauthpasswordaccessflagsflags)
    }
    
    
SQL_FreeHandle(query)
    
SQL_FreeHandle(sql)
    
SQL_FreeHandle(info)
#endif

}
public 
plugin_cfg()
{
    
set_task(6.1"delayed_load")
}

public 
delayed_load()
{
    new 
configFile[128], curMap[64], configDir[128]

    
get_configsdir(configDirsizeof(configDir)-1)
    
get_mapname(curMapsizeof(curMap)-1)

    new 
i=0;
    
    while (
curMap[i] != '_' && curMap[i++] != '^0') {/*do nothing*/}
    
    if (
curMap[i]=='_')
    {
        
// this map has a prefix
        
curMap[i]='^0';
        
formatex(configFilesizeof(configFile)-1"%s/maps/prefix_%s.cfg"configDircurMap);

        if (
file_exists(configFile))
        {
            
server_cmd("exec %s"configFile);
        }
    }

    
get_mapname(curMapsizeof(curMap)-1)

    
    
formatex(configFilesizeof(configFile)-1"%s/maps/%s.cfg"configDircurMap)

    if (
file_exists(configFile))
    {
        
server_cmd("exec %s"configFile)
    }
    
}

loadSettings(szFilename[])
{
    new 
File=fopen(szFilename,"r");
    
    if (
File)
    {
        new 
Text[512];
        new 
Flags[32];
        new 
Access[32]
        new 
AuthData[44];
        new 
Password[32];
        
        while (!
feof(File))
        {
            
fgets(File,Text,sizeof(Text)-1);
            
            
trim(Text);
            
            
// comment
            
if (Text[0]==';'
            {
                continue;
            }
            
            
Flags[0]=0;
            
Access[0]=0;
            
AuthData[0]=0;
            
Password[0]=0;
            
            
// not enough parameters
            
if (parse(Text,AuthData,sizeof(AuthData)-1,Password,sizeof(Password)-1,Access,sizeof(Access)-1,Flags,sizeof(Flags)-1) < 2)
            {
                continue;
            }
            
            
admins_push(AuthData,Password,read_flags(Access),read_flags(Flags));

            
AdminCount++;
        }
        
        
fclose(File);
    }

    if (
AdminCount == 1)
    {
        
server_print("[AMXX] %L"LANG_SERVER"LOADED_ADMIN");
    }
    else
    {
        
server_print("[AMXX] %L"LANG_SERVER"LOADED_ADMINS"AdminCount);
    }
    
    return 
1;
}

#if defined USING_SQL
public adminSql()
{
    new 
table[32], error[128], type[12], errno
    
    
new Handle:info SQL_MakeStdTuple()
    new 
Handle:sql SQL_Connect(infoerrnoerror127)
    
    
get_cvar_string("amx_sql_table"table31)
    
    
SQL_GetAffinity(type11)
    
    if (
sql == Empty_Handle)
    {
        
server_print("[AMXX] %L"LANG_SERVER"SQL_CANT_CON"error)
        
        
//backup to users.ini
        
new configsDir[64]
        
        
get_configsdir(configsDir63)
        
format(configsDir63"%s/users.ini"configsDir)
        
loadSettings(configsDir// Load admins accounts

        
return PLUGIN_HANDLED
    
}

    new 
Handle:query
    
    
if (equali(type"sqlite"))
    {
        if (!
sqlite_TableExists(sqltable))
        {
            
SQL_QueryAndIgnore(sql"CREATE TABLE %s ( auth TEXT NOT NULL DEFAULT '', password TEXT NOT NULL DEFAULT '', access TEXT NOT NULL DEFAULT '', flags TEXT NOT NULL DEFAULT '' )"table)
        }

        
query SQL_PrepareQuery(sql"SELECT auth, password, access, flags FROM %s"table)
    } else {
        
SQL_QueryAndIgnore(sql"CREATE TABLE IF NOT EXISTS `%s` ( `auth` VARCHAR( 32 ) NOT NULL, `password` VARCHAR( 32 ) NOT NULL, `access` VARCHAR( 32 ) NOT NULL, `flags` VARCHAR( 32 ) NOT NULL ) COMMENT = 'AMX Mod X Admins'"table)
        
query SQL_PrepareQuery(sql,"SELECT `auth`,`password`,`access`,`flags` FROM `%s`"table)
    }

    if (!
SQL_Execute(query))
    {
        
SQL_QueryError(queryerror127)
        
server_print("[AMXX] %L"LANG_SERVER"SQL_CANT_LOAD_ADMINS"error)
    } else if (!
SQL_NumResults(query)) {
        
server_print("[AMXX] %L"LANG_SERVER"NO_ADMINS")
    } else {
        
        
AdminCount 0
        
        
/** do this incase people change the query order and forget to modify below */
        
new qcolAuth SQL_FieldNameToNum(query"auth")
        new 
qcolPass SQL_FieldNameToNum(query"password")
        new 
qcolAccess SQL_FieldNameToNum(query"access")
        new 
qcolFlags SQL_FieldNameToNum(query"flags")
        
        new 
AuthData[44];
        new 
Password[44];
        new 
Access[32];
        new 
Flags[32];
        
        while (
SQL_MoreResults(query))
        {
            
SQL_ReadResult(queryqcolAuthAuthDatasizeof(AuthData)-1);
            
SQL_ReadResult(queryqcolPassPasswordsizeof(Password)-1);
            
SQL_ReadResult(queryqcolAccessAccesssizeof(Access)-1);
            
SQL_ReadResult(queryqcolFlagsFlagssizeof(Flags)-1);
    
            
admins_push(AuthData,Password,read_flags(Access),read_flags(Flags));
    
            ++
AdminCount;
            
SQL_NextRow(query)
        }
    
        if (
AdminCount == 1)
        {
            
server_print("[AMXX] %L"LANG_SERVER"SQL_LOADED_ADMIN")
        }
        else
        {
            
server_print("[AMXX] %L"LANG_SERVER"SQL_LOADED_ADMINS"AdminCount)
        }
        
        
SQL_FreeHandle(query)
        
SQL_FreeHandle(sql)
        
SQL_FreeHandle(info)
    }
    
    return 
PLUGIN_HANDLED
}
#endif

public cmdReload(idlevelcid)
{
    if (!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLED

    
//strip original flags (patch submitted by mrhunt)
    
remove_user_flags(0read_flags("z"))
    
    
admins_flush();

#if !defined USING_SQL
    
new filename[128]
    
    
get_configsdir(filename127)
    
format(filename63"%s/users.ini"filename)

    
AdminCount 0;
    
loadSettings(filename);        // Re-Load admins accounts

    
if (id != 0)
    {
        if (
AdminCount == 1)
        {
            
console_print(id"[AMXX] %L"LANG_SERVER"LOADED_ADMIN");
        }
        else
        {
            
console_print(id"[AMXX] %L"LANG_SERVER"LOADED_ADMINS"AdminCount);
        }
    }
#else
    
AdminCount 0
    adminSql
()

    if (
id != 0)
    {
        if (
AdminCount == 1)
            
console_print(id"[AMXX] %L"LANG_SERVER"SQL_LOADED_ADMIN")
        else
            
console_print(id"[AMXX] %L"LANG_SERVER"SQL_LOADED_ADMINS"AdminCount)
    }
#endif

    
new players[32], numpv
    
new name[32]
    
get_players(playersnum)
    for (new 
i=0i<numi++)
    {
        
pv players[i]
        
get_user_name(pvname31)
        
accessUser(pvname)
    }

    return 
PLUGIN_HANDLED
}

getAccess(idname[], authid[], ip[], password[])
{
    new 
index = -1
    
new result 0
    
    
static Count;
    static 
Flags;
    static 
Access;
    static 
AuthData[44];
    static 
Password[32];
    
    
g_CaseSensitiveName[id] = false;

    
Count=admins_num();
    for (new 
0Count; ++i)
    {
        
Flags=admins_lookup(i,AdminProp_Flags);
        
admins_lookup(i,AdminProp_Auth,AuthData,sizeof(AuthData)-1);
        
        if (
Flags FLAG_AUTHID)
        {
            if (
equal(authidAuthData))
            {
                
index i
                
break
            }
        }
        else if (
Flags FLAG_IP)
        {
            new 
strlen(AuthData)
            
            if (
AuthData[1] == '.')        /* check if this is not a xxx.xxx. format */
            
{
                if (
equal(AuthDataipc))
                {
                    
index i
                    
break
                }
            }                                    
/* in other case an IP must just match */
            
else if (equal(ipAuthData))
            {
                
index i
                
break
            }
        } 
        else 
        {
            if (
Flags FLAG_CASE_SENSITIVE)
            {
                if (
Flags FLAG_TAG)
                {
                    if (
contain(nameAuthData) != -1)
                    {
                        
index i
                        g_CaseSensitiveName
[id] = true
                        
break
                    }
                }
                else if (
equal(nameAuthData))
                {
                    
index i
                    g_CaseSensitiveName
[id] = true
                    
break
                }
            }
            else
            {
                if (
Flags FLAG_TAG)
                {
                    if (
containi(nameAuthData) != -1)
                    {
                        
index i
                        
break
                    }
                }
                else if (
equali(nameAuthData))
                {
                    
index i
                    
break
                }
            }
        }
    }

    if (
index != -1)
    {
        
Access=admins_lookup(index,AdminProp_Access);

        if (
Flags FLAG_NOPASS)
        {
            
result |= 8
            
new sflags[32]
            
            
get_flags(Accesssflags31)
            
set_user_flags(idAccess)
            
            
log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")"nameget_user_userid(id), authidAuthDatasflagsip)
        }
        else 
        {
        
            
admins_lookup(index,AdminProp_Password,Password,sizeof(Password)-1);

            if (
equal(passwordPassword))
            {
                
result |= 12
                set_user_flags
(idAccess)
                
                new 
sflags[32]
                
get_flags(Accesssflags31)
                
                
log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")"nameget_user_userid(id), authidAuthDatasflagsip)
            } 
            else 
            {
                
result |= 1
                
                
if (Flags FLAG_KICK)
                {
                    
result |= 2
                    log_amx
("Login: ^"%s<%d><%s><>^" kicked due to invalid password (account ^"%s^") (address ^"%s^")"nameget_user_userid(id), authidAuthDataip)
                }
            }
        }
    }
    else if (
get_pcvar_float(amx_mode) == 2.0)
    {
        
result |= 2
    

    else 
    {
        new 
defaccess[32]
        
        
get_pcvar_string(amx_default_accessdefaccess31)
        
        if (!
strlen(defaccess))
        {
            
copy(defaccess32"z")
        }
        
        new 
idefaccess read_flags(defaccess)
        
        if (
idefaccess)
        {
            
result |= 8
            set_user_flags
(ididefaccess)
        }
    }
    
    return 
result
}

accessUser(idname[] = "")
{
    
remove_user_flags(id)
    
    new 
userip[32], userauthid[32], password[32], passfield[32], username[32]
    
    
get_user_ip(iduserip311)
    
get_user_authid(iduserauthid31)
    
    if (
name[0])
    {
        
copy(username31name)
    }
    else
    {
        
get_user_name(idusername31)
    }
    
    
get_pcvar_string(amx_password_fieldpassfield31)
    
get_user_info(idpassfieldpassword31)
    
    new 
result getAccess(idusernameuserauthiduserippassword)
    
    if (
result 1)
    {
        
client_cmd(id"echo ^"* %L^""id"INV_PAS")
    }
    
    if (
result 2)
    {
        
client_cmd(id"%s"g_cmdLoopback)
        return 
PLUGIN_HANDLED
    
}
    
    if (
result 4)
    {
        
client_cmd(id"echo ^"* %L^""id"PAS_ACC")
    }
    
    if (
result 8)
    {
        
client_cmd(id"echo ^"* %L^""id"PRIV_SET")
    }
    
    return 
PLUGIN_CONTINUE
}

public 
client_infochanged(id)
{
    if (!
is_user_connected(id) || !get_pcvar_num(amx_mode))
    {
        return 
PLUGIN_CONTINUE
    
}

    new 
newname[32], oldname[32]
    
    
get_user_name(idoldname31)
    
get_user_info(id"name"newname31)

    if (
g_CaseSensitiveName[id])
    {
        if (!
equal(newnameoldname))
        {
            
accessUser(idnewname)
        }
    }
    else
    {
        if (!
equali(newnameoldname))
        {
            
accessUser(idnewname)
        }
    }
    return 
PLUGIN_CONTINUE
}

public 
ackSignal(id)
{
    
server_cmd("kick #%d ^"%L^""get_user_userid(id), id"NO_ENTRY")
    return 
PLUGIN_HANDLED
}

public 
client_authorized(id)
    return 
get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE

public client_putinserver(id)
{
    if (!
is_dedicated_server() && id == 1)
        return 
get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE
    
    
return PLUGIN_CONTINUE

__________________
Free Palestine ♥
plazma is offline
zmd94
Veteran Member
Join Date: Nov 2013
Location: Malaysia (9w2zow).
Old 08-14-2014 , 20:48   Re: [Help] admin sma edits
Reply With Quote #2

Why don't you use an external plugin?
zmd94 is offline
plazma
Senior Member
Join Date: Oct 2013
Old 08-15-2014 , 06:10   Re: [Help] admin sma edits
Reply With Quote #3

Quote:
Originally Posted by zmd94 View Post
Why don't you use an external plugin?
If you don't help in my script do not post any link, because i need my script OK
__________________
Free Palestine ♥
plazma is offline
LeBadit
Member
Join Date: Dec 2013
Location: Europe
Old 08-15-2014 , 07:06   Re: [Help] admin sma edits
Reply With Quote #4

You need to add the code from CustomizationTag in your plugin and then edit the user.ini line format in your plugin

Last edited by LeBadit; 08-15-2014 at 07:06.
LeBadit is offline
Send a message via Yahoo to LeBadit Send a message via Skype™ to LeBadit
plazma
Senior Member
Join Date: Oct 2013
Old 08-15-2014 , 18:03   Re: [Help] admin sma edits
Reply With Quote #5

Come one scripters ...
__________________
Free Palestine ♥
plazma is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 08-15-2014 , 21:24   Re: [Help] admin sma edits
Reply With Quote #6

Quote:
Originally Posted by plazma View Post
Come one scripters ...
What part are you having trouble with?
__________________

Last edited by fysiks; 08-15-2014 at 21:38.
fysiks is offline
zmd94
Veteran Member
Join Date: Nov 2013
Location: Malaysia (9w2zow).
Old 08-15-2014 , 21:31   Re: [Help] admin sma edits
Reply With Quote #7

Quote:
Originally Posted by fysiks
What part are you having trouble with?
He want to add ADMIN TAG in admin.sma file.
zmd94 is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 08-15-2014 , 21:38   Re: [Help] admin sma edits
Reply With Quote #8

Quote:
Originally Posted by zmd94 View Post
He want to add ADMIN TAG in admin.sma file.
I know what he wants, that is clearly stated in the OP. My question is what is he having trouble with . . . it is assumed that when you post in the Scripting Help forum, you are asking for help with a script that you are writing/modifying.
__________________
fysiks is offline
GinNNy
Senior Member
Join Date: Mar 2014
Old 08-15-2014 , 22:46   Re: [Help] admin sma edits
Reply With Quote #9

This is a request to edit it. you should post it in Suggestions/requests forum.
GinNNy is offline
zmd69
Junior Member
Join Date: Feb 2016
Old 10-30-2017 , 12:12   Re: [Help] admin sma edits
Reply With Quote #10

try this one:
Quote:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

#pragma tabsize 0

new g_iMsgID_SayText;

new g_iAdminChatFlag = ADMIN_CHAT;

new Array:szTags
new g_iPlayerTag[33]
new Array:user_authtype, Array:user_name

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

g_iMsgID_SayText = get_user_msgid( "SayText" );

new szCommand[ 32 ], iFlags;
for( new i = 0; get_concmd( i, szCommand, charsmax( szCommand ), iFlags, "", 0, 0, -1 ); i++ )
{
if( equal( szCommand, "amx_chat" ) )
{
g_iAdminChatFlag = iFlags;
break;
}
}

loadTags();
user_authtype = ArrayCreate(1, 1)
user_name = ArrayCreate(32, 1)
szTags = ArrayCreate(32, 1)
}

public client_putinserver(id)
{
g_iPlayerTag[id] = -1

static user_authstring[64], authstring[64], find
find = -1

for(new i = 0; i < ArraySize(user_authtype); i++)
{
ArrayGetString(user_name, i, authstring, charsmax(authstring))

switch(ArrayGetCell(user_authtype, i)) {
case 0: {
get_user_authid(id, user_authstring, charsmax(user_authstring))
if(equal(authstring, user_authstring)) find = i
}
case 1: {
get_user_name(id, user_authstring, charsmax(user_authstring))
if(equal(authstring, user_authstring)) find = i
}
case 2: {
get_user_ip(id, user_authstring, charsmax(user_authstring), 1)
if(equal(authstring, user_authstring)) find = i
}
}
}

if(find != -1)
g_iPlayerTag[id] = find
}

public CmdSay( iPlayer )
{
if( !g_iPlayerTag[iPlayer] )
{
return PLUGIN_CONTINUE;
}

if( !is_user_connected( iPlayer ) )
{
return PLUGIN_HANDLED_MAIN;
}

new szArgs[ 194 ];

if( !IsValidMessage( iPlayer, true, szArgs, charsmax( szArgs ) ) )
{
return PLUGIN_HANDLED_MAIN;
}

new iAlive = is_user_alive( iPlayer );
new CsTeams:iTeam = CsTeams: ( ( _:cs_get_user_team( iPlayer ) ) % 3 );

new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );

new szName[ 32 ];
get_user_name( iPlayer, szName, charsmax( szName ) );

new const szPrefixes[ 2 ][ CsTeams ][ ] =
{
{
"*SPEC* ",
"*DEAD* ",
"*DEAD* ",
"*DEAD* "
},
{
"",
"",
"",
""
}
};

new szMessage[ 191 ];
replace_all( szMessage, 190, "%s", "" );

static name[32], Tag[32], Temp[ 100 ];

if(g_iPlayerTag[iPlayer] != -1) {
ArrayGetString(szTags, g_iPlayerTag[iPlayer], Tag, charsmax(Tag))
}

get_user_name (iPlayer, name, 31)

formatex( Temp, charsmax(Temp), "^1%s^4%s^3 %s^1 : %s", szPrefixes[ iAlive ][ iTeam ], Tag, name, szArgs );

new iTarget;
for( new i = 0; i < iNum; i++ )
{
iTarget = iPlayers[ i ];

if( iTarget == iPlayer || ( iAlive || is_user_connected( iTarget ) ) && is_user_alive( iTarget ) == iAlive )
{
message_begin( MSG_ONE_UNRELIABLE, g_iMsgID_SayText, _, iTarget );
write_byte( iPlayer );
write_string( szMessage );
message_end( );
}
}

return PLUGIN_HANDLED_MAIN;
}

public CmdSayTeam( iPlayer )
{
if( !g_iPlayerTag[iPlayer] )
{
return PLUGIN_CONTINUE;
}

if( !is_user_connected( iPlayer ) )
{
return PLUGIN_HANDLED_MAIN;
}

new szArgs[ 194 ];

if( !IsValidMessage( iPlayer, true, szArgs, charsmax( szArgs ) ) )
{
return PLUGIN_HANDLED_MAIN;
}

new iAlive = is_user_alive( iPlayer );
new CsTeams:iTeam = CsTeams: ( ( _:cs_get_user_team( iPlayer ) ) % 3 );

new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum );

new szName[ 32 ];
get_user_name( iPlayer, szName, charsmax( szName ) );

new const szPrefixes[ 2 ][ CsTeams ][ ] =
{
{
"(Spectator)",
"*DEAD*(Terrorist)",
"*DEAD*(Counter-Terrorist)",
""
},
{
"(Spectator)",
"(Terrorist)",
"(Counter-Terrorist)",
""
}
};

new szMessage[ 191 ];
replace_all( szMessage, 190, "%s", "" );

new name[32], Tag[20], Temp[ 51 ];


if(g_iPlayerTag[iPlayer] != -1) {
ArrayGetString(szTags, g_iPlayerTag[iPlayer], Tag, charsmax(Tag))
}

get_user_name (iPlayer, name, 31)

formatex( Temp, charsmax(Temp), "^1%s^4 %s^3 %s^1 : %s", szPrefixes[ iAlive ][ iTeam ], Tag, name, szArgs );

for( new i = 0, iTeammate; i < iNum; i++ )
{
iTeammate = iPlayers[ i ];

if( iTeammate == iPlayer || ( iAlive || is_user_connected( iTeammate ) ) && is_user_alive( iTeammate ) == iAlive && CsTeams: ( ( _:cs_get_user_team( iTeammate ) ) % 3 ) == iTeam )
{
message_begin( MSG_ONE_UNRELIABLE, g_iMsgID_SayText, _, iTeammate );
write_byte( iPlayer );
write_string( szMessage );
message_end( );
}
}

return PLUGIN_HANDLED_MAIN;
}

bool:IsValidMessage( iPlayer, bool:bTeamSay, szMessage[ ], iLen )
{
read_args( szMessage, iLen );
remove_quotes( szMessage );

if( !szMessage[ 0 ] )
{
return false;
}

new iPos, cChar, i;
while( ( cChar = szMessage[ iPos ] ) == '@' )
{
i++;
iPos++;
}

if( i > 0 )
{
return ( !( bTeamSay ? ( i == 1 ) : ( 1 <= i <= 3 ) ) || !access( iPlayer, g_iAdminChatFlag ) );
}

while( 0 < ( cChar = szMessage[ iPos++ ] ) <= 255 )
{
if( cChar != ' ' && cChar != '%' )
{
return true;
}
}

return false;
}

loadTags()
{
// load tags from file
new sConfig[128]; get_localinfo("amxx_configsdir", sConfig, charsmax(sConfig))
formatex(sConfig, charsmax(sConfig), "%s/users.ini", sConfig);

new Len, Line[512], Data[5][64], authtype, MaxFileLine;
MaxFileLine = file_size(sConfig, 1);

for(new Num; Num < MaxFileLine; Num++)
{
read_file(sConfig, Num, Line, charsmax(Line), Len);
parse(Line, Data[0], charsmax(Data[]), Data[1], charsmax(Data[]), Data[2], charsmax(Data[]), Data[3], charsmax(Data[]), Data[4], charsmax(Data[]));

if(Line[0] == ';' || 2 > strlen(Line) || !Line[0] || Line[0] == '/' || Line[0] == '\')
continue;

remove_quotes(Data[0]); // Nick/Steam/IP
remove_quotes(Data[1]); // Password
remove_quotes(Data[2]); // Acess Flag
remove_quotes(Data[3]); // Acess Type
remove_quotes(Data[4]); // TAG

if(contain(Data[3], "c") != -1)
authtype = 0 // Steam

else if(contain(Data[3], "d") != -1) // IP
authtype = 2
else // Nick
authtype = 1

ArrayPushString(user_name, Data[0])
ArrayPushCell(user_authtype, authtype)

static szTag[32]
formatex(szTag, charsmax(szTag), "%s", Data[4])
replace_all(szTag, charsmax(szTag), "!g", "^x04")
replace_all(szTag, charsmax(szTag), "!y", "^x01")
replace_all(szTag, charsmax(szTag), "!t", "^x03")
replace_all(szTag, charsmax(szTag), "/g", "^x04")
replace_all(szTag, charsmax(szTag), "/y", "^x01")
replace_all(szTag, charsmax(szTag), "/t", "^x03")
ArrayPushString(szTags, szTag)
}
}

Last edited by zmd69; 10-30-2017 at 12:15.
zmd69 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 13:00.


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