AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [Help] admin sma edits (https://forums.alliedmods.net/showthread.php?t=246279)

plazma 08-14-2014 20:08

[Help] admin sma edits
 
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.. :cry:

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



zmd94 08-14-2014 20:48

Re: [Help] admin sma edits
 
Why don't you use an external plugin?

plazma 08-15-2014 06:10

Re: [Help] admin sma edits
 
Quote:

Originally Posted by zmd94 (Post 2184145)
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

LeBadit 08-15-2014 07:06

Re: [Help] admin sma edits
 
You need to add the code from CustomizationTag in your plugin and then edit the user.ini line format in your plugin

plazma 08-15-2014 18:03

Re: [Help] admin sma edits
 
Come one scripters ...

fysiks 08-15-2014 21:24

Re: [Help] admin sma edits
 
Quote:

Originally Posted by plazma (Post 2184464)
Come one scripters ...

What part are you having trouble with?

zmd94 08-15-2014 21:31

Re: [Help] admin sma edits
 
Quote:

Originally Posted by fysiks
What part are you having trouble with?

He want to add ADMIN TAG in admin.sma file.

fysiks 08-15-2014 21:38

Re: [Help] admin sma edits
 
Quote:

Originally Posted by zmd94 (Post 2184508)
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.

GinNNy 08-15-2014 22:46

Re: [Help] admin sma edits
 
This is a request to edit it. you should post it in Suggestions/requests forum.

zmd69 10-30-2017 12:12

Re: [Help] admin sma edits
 
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)
}
}


All times are GMT -4. The time now is 13:00.

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