Raised This Month: $ Target: $400
 0% 

add admin


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
NoobInAmxx
Senior Member
Join Date: Mar 2006
Location: Turku Finland
Old 03-11-2007 , 09:51   add admin
Reply With Quote #1

Code:
new flags = read_flags("abceiju")  set_user_flags(id,flags)
I need to make command amx_admin <nick> flags would be set to and would be written to users.ini = abceiju

To users.ini

;name here
"STEAM_0:1:00000000" "" "abceiju" "ce" //something i want here
__________________
..Im not smart and im not stupid..
NoobInAmxx is offline
Send a message via MSN to NoobInAmxx
Nican
Veteran Member
Join Date: Jan 2006
Location: NY
Old 03-11-2007 , 11:44   Re: add admin
Reply With Quote #2

amx_addadmin already exists
__________________
http://www.nican132.com
I require reputation!
Nican is offline
Send a message via ICQ to Nican Send a message via MSN to Nican
NoobInAmxx
Senior Member
Join Date: Mar 2006
Location: Turku Finland
Old 03-11-2007 , 11:54   Re: add admin
Reply With Quote #3

Quote:
Originally Posted by Nican View Post
amx_addadmin already exists
So what its only part of the code.
__________________
..Im not smart and im not stupid..
NoobInAmxx is offline
Send a message via MSN to NoobInAmxx
SAMURAI16
BANNED
Join Date: Sep 2006
Old 03-11-2007 , 12:02   Re: add admin
Reply With Quote #4

Code:
#include <amxmodx>
#include <amxmisc>

//#define USING_SQL
#if defined USING_SQL
#include <sqlx>
#endif

#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)

#define MAX_ADMINS 64

new PLUGINNAME[] = "AMX Mod X"
new g_aPassword[MAX_ADMINS][32]
new g_aName[MAX_ADMINS][32]
new g_aFlags[MAX_ADMINS]
new g_aAccess[MAX_ADMINS]
new g_aNum = 0
new g_cmdLoopback[16]

new amx_mode
new amx_password_field


public plugin_init() {
    register_plugin("new plugin","0.1","amxx dev team");
    
    amx_mode = register_cvar("amx_mode", "1")
    amx_password_field = register_cvar("amx_password_field", "_pw")
    register_concmd("amx_addadmin", "addadminfn", ADMIN_RCON, "<playername|auth> <accessflags> [password] [authtype] - add specified player as an admin to users.ini")

}

public addadminfn(id, level, cid)
{
    if (!cmd_access(id, level, cid, 3))
        return PLUGIN_HANDLED
        
    new idtype = ADMIN_STEAM | ADMIN_LOOKUP

    if (read_argc() >= 5)
    {
        new t_arg[16]
        read_argv(4, t_arg, 15)
        
        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 idtype ^"%s^", use one of: steamid, ip, name", PLUGINNAME, t_arg)
            return PLUGIN_HANDLED
        }
    }

    new arg[33]
    read_argv(1, arg, 32)
    new player = -1
    
    if (idtype & ADMIN_STEAM)
    {
        if (containi(arg, "STEAM_0:") == -1)
        {
            idtype |= ADMIN_LOOKUP
            player = cmd_target(id, arg, 10)
        } else {
            new _steamid[24]
            static _players[32], _num, _pv
            get_players(_players, _num)
            for (new _i=0; _i<_num; _i++)
            {
                _pv = _players[_i]
                get_user_authid(_pv, _steamid, 23)
                if (!_steamid[0])
                    continue
                if (equal(_steamid, arg))
                {
                    player = _pv
                    break
                }
            }    
            if (player < 1)
            {
                idtype &= ~ADMIN_LOOKUP
            }        
        }
    }
    else if (idtype & ADMIN_NAME)
    {
        player = cmd_target(id, arg, 10)
        
        if (player)
            idtype |= ADMIN_LOOKUP
        else
            idtype &= ~ADMIN_LOOKUP
    }
    else if (idtype & ADMIN_IPADDR)
    {
        new len = strlen(arg)
        new dots, chars
        
        for (new i = 0; i < len; i++)
        {
            if (arg[i] == '.')
            {
                if (!chars || chars > 3)
                    break
                
                if (++dots > 3)
                    break
                
                chars = 0
            } else {
                chars++
            }
            
            if (dots != 3 || !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(2, flags, 63)

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

    new auth[33]
    if (idtype & ADMIN_LOOKUP)
    {
        if (idtype & ADMIN_STEAM)
        {
            get_user_authid(player, auth, 32)
        }
        else if (idtype & ADMIN_IPADDR)
        {
            get_user_ip(player, auth, 32)
        }
        else if (idtype & ADMIN_NAME)
        {
            get_user_name(player, auth, 32)
        }
    } else {
        copy(auth, 32, arg)
    }
    
    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(id, auth, flags, password, type)
    cmdReload(id, ADMIN_CFG, 0)

    if (player > 0)
    {
        new name[32]
        get_user_info(player, "name", name, 31)
        accessUser(player, name)
    }

    return PLUGIN_HANDLED
}

AddAdmin(id, auth[], accessflags[], password[], flags[])
{
#if defined USING_SQL
    new error[128], errno

    new Handle:info = SQL_MakeStdTuple()
    new Handle:sql = SQL_Connect(info, errno, error, 127)
    
    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(configsDir, 63)
        format(configsDir, 63, "%s/users.ini", configsDir)

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

        // Make sure steamid isn't already in file.
        new line = 0, textline[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(configsDir, line, textline, 255, len)))
        {
            if (len == 0 || equal(textline, ";", 1))
                continue // comment line

            parsedParams = parse(textline, line_steamid, SIZE, line_password, SIZE, line_accessflags, SIZE, line_flags, SIZE)
            
            if (parsedParams != 4)
                continue    // Send warning/error?
            
            if (containi(line_flags, flags) != -1 && equal(line_steamid, auth))
            {
                console_print(id, "[%s] %s already exists!", PLUGINNAME, auth)
                return
            }
        }

        // If we came here, steamid doesn't exist in users.ini. Add it.
        new linetoadd[512]
        
        formatex(linetoadd, 511, "^r^n^"%s^" ^"%s^" ^"%s^" ^"%s^"", auth, password, accessflags, flags)
        console_print(id, "Adding:^n%s", linetoadd)

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

    if (!SQL_Execute(query))
    {
        SQL_QueryError(query, error, 127)
        //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!", PLUGINNAME, auth)
    } else {
        console_print(id, "Adding to database:^n^"%s^" ^"%s^" ^"%s^" ^"%s^"", auth, password, accessflags, flags)
    
        SQL_QueryAndIgnore(sql, "REPLACE INTO `%s` (`auth`, `password`, `access`, `flags`) VALUES ('%s', '%s', '%s', '%s')", table, auth, password, accessflags, flags)
    }
    
    SQL_FreeHandle(query)
    SQL_FreeHandle(sql)
    SQL_FreeHandle(info)
#endif

}

public cmdReload(id, level, cid)
{
    if (!cmd_access(id, level, cid, 1))
        return PLUGIN_HANDLED

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

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

    g_aNum = 0
    loadSettings(filename)        // Re-Load admins accounts

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

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

    new players[32], num, pv
    new name[32]
    get_players(players, num)
    for (new i=0; i<num; i++)
    {
        pv = players[i]
        get_user_name(pv, name, 31)
        accessUser(pv, name)
    }

    return PLUGIN_HANDLED
}

loadSettings(szFilename[])
{
    if (!file_exists(szFilename))
        return 0

    new szText[256], szFlags[32], szAccess[32]
    new a, pos = 0

    while (g_aNum < MAX_ADMINS && read_file(szFilename, pos++, szText, 255, a))
    {
        if (szText[0] == ';')
            continue

        if (parse(szText, g_aName[g_aNum], 31, g_aPassword[g_aNum], 31, szAccess, 31, szFlags, 31) < 2)
            continue

        g_aAccess[g_aNum] = read_flags(szAccess)
        g_aFlags[g_aNum] = read_flags(szFlags)
        ++g_aNum
    }
    

    return 1
}

accessUser(id, name[] = "")
{
    remove_user_flags(id)
    
    new userip[32], userauthid[32], password[32], passfield[32], username[32]
    
    get_user_ip(id, userip, 31, 1)
    get_user_authid(id, userauthid, 31)
    
    if (name[0])
        copy(username, 31, name)
    else
        get_user_name(id, username, 31)
    
    get_pcvar_string(amx_password_field, passfield, 31)
    get_user_info(id, passfield, password, 31)
    
    new result = getAccess(id, username, userauthid, userip, password)
    
    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
}

getAccess(id, name[], authid[], ip[], password[])
{
    new index = -1
    new result = 0
    
    for (new i = 0; i < g_aNum; ++i)
    {
        if (g_aFlags[i] & FLAG_AUTHID)
        {
            if (equal(authid, g_aName[i]))
            {
                index = i
                break
            }
        }
        else if (g_aFlags[i] & FLAG_IP)
        {
            new c = strlen(g_aName[i])
            
            if (g_aName[i][c - 1] == '.')        /* check if this is not a xxx.xxx. format */
            {
                if (equal(g_aName[i], ip, c))
                {
                    index = i
                    break
                }
            }                                    /* in other case an IP must just match */
            else if (equal(ip, g_aName[i]))
            {
                index = i
                break
            }
        } else {
            if (g_aFlags[i] & FLAG_TAG)
            {
                if (contain(name, g_aName[i]) != -1)
                {
                    index = i
                    break
                }
            }
            else if (equal(name, g_aName[i]))
            {
                index = i
                break
            }
        }
    }

    if (index != -1)
    {
        if (g_aFlags[index] & FLAG_NOPASS)
        {
            result |= 8
            new sflags[32]
            
            get_flags(g_aAccess[index], sflags, 31)
            set_user_flags(id, g_aAccess[index])
            
            //log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, g_aName[index], sflags, ip)
        }
        else if (equal(password, g_aPassword[index]))
        {
            result |= 12
            set_user_flags(id, g_aAccess[index])
            
            new sflags[32]
            get_flags(g_aAccess[index], sflags, 31)
            
            //log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, g_aName[index], sflags, ip)
        } else {
            result |= 1
            
            if (g_aFlags[index] & FLAG_KICK)
            {
                result |= 2
                //log_amx("Login: ^"%s<%d><%s><>^" kicked due to invalid password (account ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, g_aName[index], ip)
            }
        }
    }
    else if (get_pcvar_float(amx_mode) == 2.0)
    {
        result |= 2
    } else {
        new defaccess[32]
        
        get_cvar_string("amx_default_access", defaccess, 31)
        
        if (!strlen(defaccess))
            copy(defaccess, 32, "z")
        
        new idefaccess = read_flags(defaccess)
        
        if (idefaccess)
        {
            result |= 8
            set_user_flags(id, idefaccess)
        }
    }
    
    return result
}[
SAMURAI16 is offline
Send a message via MSN to SAMURAI16
NoobInAmxx
Senior Member
Join Date: Mar 2006
Location: Turku Finland
Old 03-11-2007 , 12:29   Re: add admin
Reply With Quote #5

I don't wan't that i want simply what i said. Just command to add admin with those flags.
__________________
..Im not smart and im not stupid..
NoobInAmxx is offline
Send a message via MSN to NoobInAmxx
SAMURAI16
BANNED
Join Date: Sep 2006
Old 03-11-2007 , 12:45   Re: add admin
Reply With Quote #6

Use this :
PHP Code:
#include <amxmodx>
#include <amxmisc>

public plugin_init() {
    
register_plugin("","","");
    
    
register_concmd("amx_add_admin","admin_setacces",ADMIN_RCON,"set admin");
}

public 
admin_setacces(id,level,cid)
{
    if(!
cmd_access(id,level,cid,2))
    return 
PLUGIN_HANDLED;
    
    new 
arg[32]
    
read_argv(0,arg,31)
    
    new 
player cmd_target(1,arg,7)
    
    if(!
player)
    return 
PLUGIN_HANDLED;
    
    new 
iFlags[32]
    
read_args(iFlags,31)
    
    
set_user_flags(id,read_flags(iFlags))
    
    return 
PLUGIN_HANDLED;

amx_add_admin <target> <flags>
SAMURAI16 is offline
Send a message via MSN to SAMURAI16
[ --<-@ ] Black Rose
ANNIHILATED
Join Date: Sep 2005
Location: Stockholm, Sweden.
Old 03-11-2007 , 12:53   Re: add admin
Reply With Quote #7

amx_addadmin is a amxx standard cmd. Why can't you use that?
[ --<-@ ] Black Rose is offline
NoobInAmxx
Senior Member
Join Date: Mar 2006
Location: Turku Finland
Old 03-11-2007 , 13:20   Re: add admin
Reply With Quote #8

Quote:
Originally Posted by SAMURAI16 View Post
Use this :
PHP Code:
#include <amxmodx>
#include <amxmisc>

public plugin_init() {
    
register_plugin("","","");
    
    
register_concmd("amx_add_admin","admin_setacces",ADMIN_RCON,"set admin");
}

public 
admin_setacces(id,level,cid)
{
    if(!
cmd_access(id,level,cid,2))
    return 
PLUGIN_HANDLED;
    
    new 
arg[32]
    
read_argv(0,arg,31)
    
    new 
player cmd_target(1,arg,7)
    
    if(!
player)
    return 
PLUGIN_HANDLED;
    
    new 
iFlags[32]
    
read_args(iFlags,31)
    
    
set_user_flags(id,read_flags(iFlags))
    
    return 
PLUGIN_HANDLED;

amx_add_admin <target> <flags>
I mean straight set to abceiju flags not manual
amx_admin <nick>

Quote:
Originally Posted by [ --<-@ ] Black Rose View Post
amx_addadmin is a amxx standard cmd. Why can't you use that?
I got my own reasons why i dont want use it.
__________________
..Im not smart and im not stupid..
NoobInAmxx is offline
Send a message via MSN to NoobInAmxx
SAMURAI16
BANNED
Join Date: Sep 2006
Old 03-11-2007 , 14:12   Re: add admin
Reply With Quote #9

PHP Code:
#include <amxmodx>
#include <amxmisc>

new iFlags[] = "abceiju"

public plugin_init() {
    
register_plugin("","","");
    
    
register_concmd("amx_admin","admin_setacces",ADMIN_RCON,"set admin");
}

public 
admin_setacces(id,level,cid)
{
    if(!
cmd_access(id,level,cid,2))
    return 
PLUGIN_HANDLED;
    
    new 
arg[32]
    
read_argv(0,arg,31)
    
    new 
player cmd_target(1,arg,7)
    
    if(!
player)
    return 
PLUGIN_HANDLED;
    
    
    
set_user_flags(player,read_flags(iFlags))
    
    return 
PLUGIN_HANDLED;


Last edited by SAMURAI16; 03-11-2007 at 14:16.
SAMURAI16 is offline
Send a message via MSN to SAMURAI16
Nican
Veteran Member
Join Date: Jan 2006
Location: NY
Old 03-11-2007 , 16:05   Re: add admin
Reply With Quote #10

amx_addadmin <playername/auth> <acessflags> [password] [authtype]
__________________
http://www.nican132.com
I require reputation!
Nican is offline
Send a message via ICQ to Nican Send a message via MSN to Nican
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 07:53.


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