Sms.sma Problema

Forumas skirtas spręsti problemas iškilusias su CS 1.6 serveriais.
Post Reply
Kanape
Jau po truputį tampa savu
Posts: 193
Joined: 2010 Oct 23 14:26
Skype: noway_lyderis
Location: Jonava
Contact:

Sms.sma Problema

Post by Kanape »

Turiu plugina sms sistemos stai sita ir per ji man serves nekeice automatiskai map kame beda ?

Code: Select all

#include <amxmodx>#include <amxmisc>#include <sqlx> #define VERSION_AMXX "1.8.1.3746"#define VERSION_AMXBANS "VIP sistema" new AdminCount; #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]  // pcvarsnew amx_mode;new amx_password_field;new amx_default_access; new Handle:info public plugin_init(){        register_plugin(VERSION_AMXBANS, VERSION_AMXX, "AMXBans Dev Team")    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)     register_srvcmd("amx_sqladmins", "adminSql")    register_cvar("amx_sql_table_sms", "amx_amxadmins")    register_cvar("amx_sql_host_sms", "127.0.0.1")    register_cvar("amx_sql_user_sms", "root")    register_cvar("amx_sql_pass_sms", "")    register_cvar("amx_sql_db_sms", "sms1")    register_cvar("amx_sql_type_sms", "mysql")     register_concmd("amx_reloadadmins", "cmdReload", ADMIN_CFG)        format(g_cmdLoopback, 15, "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(0, read_flags("z"))       // Remove 'user' flag from server rights} public plugin_cfg(){    new configsDir[64]    get_configsdir(configsDir, 63)        server_cmd("exec %s/amxx.cfg", configsDir)  // Execute main configuration file    server_cmd("exec %s/sql.cfg", configsDir)        set_task(0.1,"sql_init",101)    //server_cmd("amx_sqladmins")        set_task(6.1, "delayed_load",102)}public plugin_end() {    if(info==Empty_Handle)        SQL_FreeHandle(info)}public delayed_load(){    new configFile[128], curMap[64], configDir[128]     get_configsdir(configDir, sizeof(configDir)-1)    get_mapname(curMap, sizeof(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(configFile, sizeof(configFile)-1, "%s/maps/prefix_%s.cfg", configDir, curMap);         if (file_exists(configFile))        {            server_cmd("exec %s", configFile);        }    }     get_mapname(curMap, sizeof(curMap)-1)         formatex(configFile, sizeof(configFile)-1, "%s/maps/%s.cfg", configDir, curMap)     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;}public sql_init() {    //new type    //SQL_GetAffinity(type, 11)    SQL_SetAffinity("mysql")    info = SQL_MakeStdTuple()        adminSql()}public adminSql(){    //new error[128],  errno    //new Handle:sql = SQL_Connect(info, errno, error, 127)      new  error[128], errno        new Handle:info = SQL_MakeDbTuple("127.0.0.1","root","pw","sms1")    new Handle:sql = SQL_Connect(info, errno, error, 127)         // This is a new way of getting the port number    new ip_port[42], ip_tmp[32], ip[32] , port[10]    get_user_ip(0, ip_port, 41)    strtok(ip_port, ip_tmp, 31, port, 9, ':')    get_cvar_string("ip",ip,32)        if (sql == Empty_Handle)    {        server_print("[AMXX] %L", LANG_SERVER, "SQL_CANT_CON", error)                //backup to users.ini        new configsDir[64]                get_configsdir(configsDir, 63)        format(configsDir, 63, "%s/users.ini", configsDir)        loadSettings(configsDir) // Load admins accounts from users.ini                return PLUGIN_HANDLED    }        new Handle:query        // Sqlite is removed as amxbans dont use that.        SQL_QueryAndIgnore(sql, "CREATE TABLE IF NOT EXISTS `amx_amxadmins` (`id` int(12) NOT NULL auto_increment, `username` varchar(32) default NULL, `password` varchar(32) default NULL, `access` varchar(32) default NULL, `flags` varchar(32) default NULL, `steamid` varchar(32) default NULL, `nickname` varchar(32) NOT NULL default '', PRIMARY KEY (`id`))")    query = SQL_PrepareQuery(sql,"SELECT amx_amxadmins.username, amx_amxadmins.password, amx_amxadmins.access, amx_amxadmins.flags FROM amx_amxadmins")     if (!SQL_Execute(query))    {        SQL_QueryError(query, error, 127)        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, "username")        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(query, qcolAuth, AuthData, sizeof(AuthData)-1);            SQL_ReadResult(query, qcolPass, Password, sizeof(Password)-1);            SQL_ReadResult(query, qcolAccess, Access, sizeof(Access)-1);            SQL_ReadResult(query, qcolFlags, Flags, sizeof(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)     return PLUGIN_HANDLED} 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"))        admins_flush();     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)    }     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} getAccess(id, name[], authid[], ip[], password[]){    new index = -1    new result = 0        static Count;    static Flags;    static Access;    static AuthData[44];    static Password[32];        Count=admins_num();    for (new i = 0; i < Count; ++i)    {        Flags=admins_lookup(i,AdminProp_Flags);        admins_lookup(i,AdminProp_Auth,AuthData,sizeof(AuthData)-1);                if (Flags & FLAG_AUTHID)        {            if (equal(authid, AuthData))            {                index = i                break            }        }        else if (Flags & FLAG_IP)        {            new c = strlen(AuthData)                        if (AuthData[c - 1] == '.')     /* check if this is not a xxx.xxx. format */            {                if (equal(AuthData, ip, c))                {                    index = i                    break                }            }                   /* in other case an IP must just match */            else if (equal(ip, AuthData))            {                index = i                break            }        }         else         {            if (Flags & FLAG_TAG)            {                if (containi(name, AuthData) != -1)                {                    index = i                    break                }            }            else if (equali(name, AuthData))            {                index = i                break            }        }    }     if (index != -1)    {        Access=admins_lookup(index,AdminProp_Access);         if (Flags & FLAG_NOPASS)        {            result |= 8            new sflags[32]                        get_flags(Access, sflags, 31)            set_user_flags(id, Access)                        log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, sflags, ip)        }        else         {                    admins_lookup(index,AdminProp_Password,Password,sizeof(Password)-1);             if (equal(password, Password))            {                result |= 12                set_user_flags(id, Access)                                new sflags[32]                get_flags(Access, sflags, 31)                                log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, sflags, ip)            }             else             {                result |= 1                                if (Flags & 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, AuthData, ip)                }            }        }    }    else if (get_pcvar_float(amx_mode) == 2.0)    {        result |= 2    }     else     {        new defaccess[32]                get_pcvar_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} 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} 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(id, oldname, 31)    get_user_info(id, "name", newname, 31)     if (!equali(newname, oldname))    {        accessUser(id, newname)    }     return PLUGIN_CONTINUE} public ackSignal(id){    server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "NO_ENTRY")    return PLUGIN_HANDLED} public client_putinserver(id)    return get_cvar_num("amx_mode") ? accessUser(id) : PLUGIN_CONTINUE /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }*/ 
Image

Post Reply

Who is online

Users browsing this forum: No registered users and 9 guests