hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.06. 20:12



Jelenlévő felhasználók

Jelenleg 219 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 218 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Majestic-12 [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 21 hozzászólás ]  Oldal 1 2 3 Következő
Szerző Üzenet
 Hozzászólás témája: AMXBans (MySQL része)
HozzászólásElküldve: 2010.08.20. 11:02 
Offline
Lelkes

Csatlakozott: 2010.07.07. 08:07
Hozzászólások: 25
Hali, valaki tudna segíteni, abban hogy az amxbans (v6)-nak ha bevan állítva minden normálisan,
miért nem mutatja a weboldalon a szervert?
Ráadásul most banolni sem lehet...

SQL.cfg
Kód:
amx_sql_host   "195.228.74.124:3306"
amx_sql_user   "admin"
amx_sql_pass   "jelszo"
amx_sql_db      "databazis"
amx_sql_table   "admins"
amx_sql_type   "mysql"

ui.: az sql_hostba lehet domain nevet rakni?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AMXBans (MySQL része)
HozzászólásElküldve: 2010.08.20. 16:15 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Szerintem lehet, de miért van ott port?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AMXBans (MySQL része)
HozzászólásElküldve: 2010.08.20. 17:49 
Offline
Beavatott

Csatlakozott: 2010.08.10. 17:30
Hozzászólások: 82
Megköszönték neki: 2 alkalommal
a mysql modult bekapcsoltad?
A portot meg általában nem szükséges kitenni próbáld meg anélkül is.
Az hostname persze hogy tartalmazhat domain címet is
pl.
$host = "domain.hu"
vagy
$host = "aldomain.domain.hu"
DE a WWW vagy HTTP -t tilos oda tenni mivel ez egy protokol!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AMXBans (MySQL része)
HozzászólásElküldve: 2010.08.20. 21:30 
Offline
Lelkes

Csatlakozott: 2010.07.07. 08:07
Hozzászólások: 25
mysql modult bekapcsoltam persze..
megpróbálom akkor úgy hogy domaint írok nem IP-t


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AMXBans (MySQL része)
HozzászólásElküldve: 2010.08.20. 21:35 
Offline
Lelkes

Csatlakozott: 2010.07.07. 08:07
Hozzászólások: 25
21:34:34 L 08/20/2010 - 21:34:33: [MySQL] Invalid info tuple handle: 0
21:34:34 L 08/20/2010 - 21:34:33: [AMXX] Run time error 10 (plugin "amxbans_main.amxx") (native "SQL_ThreadQuery") - debug not enabled!
21:34:34 L 08/20/2010 - 21:34:33: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

ezt a hibakódot kapom vissza ha banolni próbálok valakit...


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AMXBans (MySQL része)
HozzászólásElküldve: 2010.08.20. 22:21 
Offline
Beavatott

Csatlakozott: 2010.08.10. 17:30
Hozzászólások: 82
Megköszönték neki: 2 alkalommal
próbáld meg hozzáadni a "debug"-t a plugin után
tehát így írd be a plugint a plugins.ini-be
Kód:
valami.amxx debug


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AMXBans (MySQL része)
HozzászólásElküldve: 2010.08.20. 22:49 
Offline
Lelkes

Csatlakozott: 2010.07.07. 08:07
Hozzászólások: 25
Nos, beírtam mögé a debug-ot
nemsok minden változott...
22:48:17 L 08/20/2010 - 22:48:17: [MySQL] Invalid info tuple handle: 0
22:48:17 L 08/20/2010 - 22:48:17: [AMXX] Displaying debug trace (plugin "amxbans_main.amxx")
22:48:17 L 08/20/2010 - 22:48:17: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery")
22:48:17 L 08/20/2010 - 22:48:17: [AMXX] [0] cmdBan.inl::cmdBan (line 248)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AMXBans (MySQL része)
HozzászólásElküldve: 2010.08.20. 22:51 
Offline
Lelkes

Csatlakozott: 2010.07.07. 08:07
Hozzászólások: 25
ui.: felvennél msnre ? légyszives

obdi@easyprocs.info


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AMXBans (MySQL része)
HozzászólásElküldve: 2010.08.21. 15:48 
Offline
Imperátor
Avatar

Csatlakozott: 2009.04.21. 09:33
Hozzászólások: 3991
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 135 alkalommal
Forráskódot be tudnád ide pakolni?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AMXBans (MySQL része)
HozzászólásElküldve: 2010.08.21. 21:22 
Offline
Lelkes

Csatlakozott: 2010.07.07. 08:07
Hozzászólások: 25
amxbans_core.sma
Kód:
#include <amxmodx>
#include <amxmisc>
#include <sqlx>

new AdminCount;

new PLUGINNAME[]    = "AMXBans Core"
new PLUGINVERSION[]    = "6.0.1"

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

//amxbans
new pcvarip,pcvarprefix,pcvaradminsfile
new g_ServerAddr[100],g_dbPrefix[32],g_AdminsFromFile
new g_szAdminNick[33][32],g_iAdminUseStaticBantime[33]
new Array:g_AdminNick
new Array:g_AdminUseStaticBantime

//multi forward handles
new bool:g_isAdmin[33]
enum MFHANDLE_TYPES {
   Amxbans_Sql_Initialized=0,
   Admin_Connect,
   Admin_Disconnect
}
new MFHandle[MFHANDLE_TYPES]

new Handle:info
new bool:g_bSqlInitialized

public plugin_init()
{
   register_plugin(PLUGINNAME, PLUGINVERSION, "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", "admins")
// amxbans
   pcvarip=register_cvar("amxbans_server_address","")
   pcvarprefix=register_cvar("amx_sql_prefix", "amx")
   pcvaradminsfile=register_cvar("amxbans_use_admins_file","0")
   
   g_AdminNick=ArrayCreate(32,32)
   g_AdminUseStaticBantime=ArrayCreate(1,32)
//
   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_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

   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)
   //server_cmd("exec %s/amxbans.cfg", configsDir)

}
public client_connect(id)
{
   g_CaseSensitiveName[id] = false;
}
public plugin_cfg() {
   //fixx to be sure cfgs are loaded
   create_forwards()
   set_task(0.1,"delayed_plugin_cfg")
}
create_forwards() {
   MFHandle[Amxbans_Sql_Initialized]=CreateMultiForward("amxbans_sql_initialized",ET_IGNORE,FP_CELL,FP_STRING)
   MFHandle[Admin_Connect]=CreateMultiForward("amxbans_admin_connect",ET_IGNORE,FP_CELL)
   MFHandle[Admin_Disconnect]=CreateMultiForward("amxbans_admin_disconnect",ET_IGNORE,FP_CELL)
}
public delayed_plugin_cfg()
{
   //check if amxbans plugins are the first plugins and default admin plugins are disabled
   //added for admins who cant read the docs
   if(find_plugin_byfile("admin.amxx") != INVALID_PLUGIN_ID) {
      log_amx("[AMXBans] WARNING: admin.amxx plugin running! stopped.")
      pause("acd","admin.amxx")
   }
   if(find_plugin_byfile("admin_sql.amxx") != INVALID_PLUGIN_ID) {
      log_amx("[AMXBans] WARNING: admin_sql.amxx plugin running! stopped.")
      pause("acd","admin_sql.amxx")
   }
   if(find_plugin_byfile("amxbans_core.amxx") != 0) log_amx("[AMXBans] WARNING: amxbans_core.amxx should be the fist entry in your plugins.ini!")
   if(find_plugin_byfile("amxbans_main.amxx") != 1) log_amx("[AMXBans] WARNING: amxbans_main.amxx should be the second entry in your plugins.ini!")
      
   get_pcvar_string(pcvarprefix,g_dbPrefix,charsmax(g_dbPrefix))
   get_pcvar_string(pcvarip,g_ServerAddr,charsmax(g_ServerAddr))
   g_AdminsFromFile=get_pcvar_num(pcvaradminsfile)
   
   if(strlen(g_ServerAddr) < 9) {
      new ip[32]
      get_user_ip(0,ip,31)
      formatex(g_ServerAddr,charsmax(g_ServerAddr),"%s",ip)
   }
   if(get_cvar_num("amxbans_debug") >= 1) server_print("[AMXBans] plugin_cfg: ip %s / prefix %s",g_ServerAddr,g_dbPrefix)
   
   server_cmd("amx_sqladmins")
   server_exec();

   set_task(6.1, "delayed_load")
}

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];
      new Name[32];
      new Static[2];
      
      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;
         Name[0] = 0;
         Static[0] = 0;
         
         // not enough parameters
         if (parse(Text, AuthData, charsmax(AuthData), Password, charsmax(Password), Access, charsmax(Access), Flags, charsmax(Flags), Name, charsmax(Name), Static, charsmax(Static)) < 2)
         {
            continue;
         }
         
         admins_push(AuthData,Password,read_flags(Access),read_flags(Flags));
         ArrayPushString(g_AdminNick, Name);
         ArrayPushCell(g_AdminUseStaticBantime, str_to_num(Static));
         
         AdminCount++;
      }
      
      fclose(File);
   }

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


public adminSql()
{
   new table[32], error[128], errno
   
   SQL_SetAffinity("mysql")
   info = SQL_MakeStdTuple()
   new Handle:sql = SQL_Connect(info, errno, error, 127)
   
   get_cvar_string("amx_sql_table", table, 31)   
   
   //sql error or amxbans_use_admins_file == 1
   if (sql == Empty_Handle || g_AdminsFromFile == 1)
   {
      if(!g_AdminsFromFile) server_print("[AMXBans] %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

      return PLUGIN_HANDLED
   }
   if(g_AdminsFromFile > 1) return PLUGIN_HANDLED
   
   admins_flush();
   ArrayClear(g_AdminNick)
   ArrayClear(g_AdminUseStaticBantime)
   
   new Handle:query
   
//amxbans   
   new temp[1024]
   
   formatex(temp,1023,"SELECT aa.steamid,aa.password,aa.access,aa.flags,aa.nickname,ads.custom_flags,ads.use_static_bantime \
      FROM PREFIX_amxadmins as aa, PREFIX_admins_servers as ads, PREFIX_serverinfo as si \
      WHERE ((ads.admin_id=aa.id) AND (ads.server_id=si.id) AND \
      ((aa.days=0) OR (aa.expired>UNIX_TIMESTAMP(NOW()))) AND (si.address='%s'))",g_ServerAddr)
      
   new pquery[1024]
   prepare_prefix(temp,pquery,charsmax(pquery))
   query = SQL_PrepareQuery(sql,pquery)
   
   SQL_Execute(query)
//
   
   AdminCount = 0
   if(SQL_NumRows(query)) {
      /** do this incase people change the query order and forget to modify below */
      new qcolAuth = SQL_FieldNameToNum(query, "steamid")
      new qcolPass = SQL_FieldNameToNum(query, "password")
      new qcolAccess = SQL_FieldNameToNum(query, "access")
      new qcolFlags = SQL_FieldNameToNum(query, "flags")
      new qcolNick = SQL_FieldNameToNum(query, "nickname")
      new qcolCustom = SQL_FieldNameToNum(query, "custom_flags")
      new qcolStatic = SQL_FieldNameToNum(query, "use_static_bantime")
   
   
      new AuthData[44];
      new Password[44];
      new Access[32];
      new Flags[32];
      new Nick[32];
      new Static[5]
      new iStatic
      
      while (SQL_MoreResults(query))
      {
         SQL_ReadResult(query, qcolAuth, AuthData, sizeof(AuthData)-1);
         SQL_ReadResult(query, qcolPass, Password, sizeof(Password)-1);
         SQL_ReadResult(query, qcolStatic, Static, sizeof(Static)-1);
         SQL_ReadResult(query, qcolCustom, Access, sizeof(Access)-1);
         SQL_ReadResult(query, qcolNick, Nick, sizeof(Nick)-1);
         SQL_ReadResult(query, qcolFlags, Flags, sizeof(Flags)-1);
         
         //if custom access not set get the global
         trim(Access)
         if(equal(Access,"")) SQL_ReadResult(query, qcolAccess, Access, sizeof(Access)-1);
         
         admins_push(AuthData,Password,read_flags(Access),read_flags(Flags));
         
         //save nick
         ArrayPushString(g_AdminNick,Nick)
         
         //save static bantime
         iStatic=1
         if(equal(Static,"no")) iStatic=0
         ArrayPushCell(g_AdminUseStaticBantime,iStatic)
         
         ++AdminCount;
         SQL_NextRow(query)
      }
   }

   if (AdminCount == 1)
   {
      server_print("[AMXBans] %L", LANG_SERVER, "SQL_LOADED_ADMIN")
   }
   else
   {
      server_print("[AMXBans] %L", LANG_SERVER, "SQL_LOADED_ADMINS", AdminCount)
   }
   
   SQL_FreeHandle(query)
   SQL_FreeHandle(sql)
   
   
   if(!g_bSqlInitialized) {
      new ret
      ExecuteForward(MFHandle[Amxbans_Sql_Initialized],ret,info,g_dbPrefix)
   }
   g_bSqlInitialized=true
   
   return PLUGIN_HANDLED
}
public plugin_end() {
   if(info != Empty_Handle) SQL_FreeHandle(info)
}

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"))
   
   AdminCount = 0
   adminSql()

   if (id != 0)
   {
      if (AdminCount == 1)
         console_print(id, "[AMXBans] %L", LANG_SERVER, "SQL_LOADED_ADMIN")
      else
         console_print(id, "[AMXBans] %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];
   
   g_CaseSensitiveName[id] = false;

   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_CASE_SENSITIVE)
         {
            if (Flags & FLAG_TAG)
            {
               if (contain(name, AuthData) != -1)
               {
                  index = i
                  g_CaseSensitiveName[id] = true
                  break
               }
            }
            else if (equal(name, AuthData))
            {
               index = i
               g_CaseSensitiveName[id] = true
               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);
//amxbans
      ArrayGetString(g_AdminNick,index,g_szAdminNick[id],31)
      g_iAdminUseStaticBantime[id]=ArrayGetCell(g_AdminUseStaticBantime,index)
//

      if (Flags & FLAG_NOPASS)
      {
         result |= 8
         new sflags[32]
         
         get_flags(Access, sflags, 31)
         set_user_flags(id, Access)
         
         new ret
         if(!g_isAdmin[id]) ExecuteForward(MFHandle[Admin_Connect],ret,id)
         g_isAdmin[id]=true
         
         log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^") (nick ^"%s^") (static %d)", \
            name, get_user_userid(id), authid, AuthData, sflags, ip,g_szAdminNick[id],g_iAdminUseStaticBantime[id])
      }
      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)
            
            new ret
            if(!g_isAdmin[id]) ExecuteForward(MFHandle[Admin_Connect],ret,id)
            g_isAdmin[id]=true
            
            log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^") (nick ^"%s^") (static %d)", \
               name, get_user_userid(id), authid, AuthData, sflags, ip,g_szAdminNick[id],g_iAdminUseStaticBantime[id])
         }
         else
         {
            result |= 1
            
            if (Flags & FLAG_KICK)
            {
               result |= 2
               g_isAdmin[id]=false
               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 (g_CaseSensitiveName[id])
   {
      if (!equal(newname, oldname))
      {
         accessUser(id, newname)
      }
   }
   else
   {
      if (!equali(newname, oldname))
      {
         accessUser(id, newname)
      }
   }
   return PLUGIN_CONTINUE
}
public client_disconnect(id) {
   if(g_isAdmin[id]) {
      new ret
      ExecuteForward(MFHandle[Admin_Disconnect],ret,id)
   }
   g_isAdmin[id]=false
}
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
}
//amxbans
prepare_prefix(szQuery[],output[],len) {
   copy(output,len,szQuery)
   replace_all(output,len,"PREFIX",g_dbPrefix)
   
   return PLUGIN_CONTINUE
}
//natives
public plugin_natives() {
   register_library("AMXBansCore")
   
   register_native("amxbans_get_db_prefix","native_amxbans_get_prefix")
   register_native("amxbans_get_admin_nick","native_amxbans_get_nick")
   register_native("amxbans_get_static_bantime","native_amxbans_static_bantime")
}
public native_amxbans_get_prefix() {
   new len= get_param(2)
   set_array(1,g_dbPrefix,len)
}
public native_amxbans_get_nick() {
   
   new id = get_param(1)
   new len= get_param(3)
   
   set_array(2,g_szAdminNick[id],len)
}
public native_amxbans_static_bantime() {
   new id = get_param(1)
   if(get_cvar_num("amxbans_debug") >= 3) log_amx("[AMXBans Core] Native static bantime: id: %d | result: %d",id,g_iAdminUseStaticBantime[id])
   return g_iAdminUseStaticBantime[id]
}


amxbans_main.sma
Kód:
new const AUTHOR[] = "AMXBans Dev Team"
new const PLUGIN_NAME[] = "AMXBans Main"
new const VERSION[] = "6.0.1" // This is used in the plugins name

new const amxbans_version[] = "6.0.1" // This is for the DB

#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <time>

// Amxbans Core natives
#include "include/amxbans_core.inc"

// Amxbans .inl files
#include "include/amxbans/global_vars.inl"
#include "include/amxbans/color_chat.inl"
#include "include/amxbans/init_functions.inl"
#include "include/amxbans/check_player.inl"
#include "include/amxbans/check_flag.inl"
#include "include/amxbans/menu_stocks.inl"
#include "include/amxbans/menu_ban.inl"
#include "include/amxbans/menu_disconnected.inl"
#include "include/amxbans/menu_history.inl"
#include "include/amxbans/menu_flag.inl"
#include "include/amxbans/cmdBan.inl"
//#include "include/amxbans/cmdUnban.inl"
#include "include/amxbans/web_handshake.inl"


// 16k * 4 = 64k stack size
#pragma dynamic 16384       // Give the plugin some extra memory to use


public plugin_init() {
   register_plugin(PLUGIN_NAME, VERSION, AUTHOR)
   register_cvar("amxbans_version", VERSION, FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY)
   
   register_dictionary("amxbans.txt")
   register_dictionary("common.txt")
   register_dictionary("time.txt")
   
   new szGame[20];
   get_modname(szGame, charsmax(szGame));
   
   if (equal(szGame, "cstrike") || equal(szGame, "czero"))
      register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
   else if (equal(szGame, "dod"))
      register_event("RoundState", "event_new_round", "a", "1=1");
   else
      g_supported_game = false;
   
   register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")
   register_clcmd("amxbans_custombanreason", "setCustomBanReason", ADMIN_BAN, "- configures custom ban message")
   register_clcmd("amx_banhistorymenu", "cmdBanhistoryMenu", ADMIN_BAN, "- displays banhistorymenu")
   register_clcmd("amx_bandisconnectedmenu", "cmdBanDisconnectedMenu", ADMIN_BAN, "- displays bandisconnectedmenu")
   register_clcmd("amx_flaggingmenu","cmdFlaggingMenu",ADMIN_BAN,"- displays flagging menu")
   
   register_srvcmd("amx_sethighbantimes", "setHighBantimes")
   register_srvcmd("amx_setlowbantimes", "setLowBantimes")
   register_srvcmd("amx_setflagtimes","setFlagTimes")
   
   register_concmd("amx_reloadreasons", "cmdFetchReasons", ADMIN_CFG)
   
   pcvar_serverip      =   register_cvar("amxbans_server_address","")
   pcvar_server_nick    =    register_cvar("amxbans_servernick", "")
   pcvar_discon_in_banlist   =   register_cvar("amxbans_discon_players_saved","10")
   pcvar_complainurl   =    register_cvar("amxbans_complain_url", "www.yoursite.com") // Dont use http:// then the url will not show
   pcvar_debug       =    register_cvar("amxbans_debug", "0") // Set this to 1 to enable debug
   pcvar_newbancmd      =   register_cvar("amxbans_use_newbancmd","1")
   pcvar_add_mapname   =   register_cvar("amxbans_add_mapname_in_servername", "0")
   pcvar_flagged_all   =   register_cvar("amxbans_flagged_all_server","1")
   pcvar_show_in_hlsw    =    register_cvar("amxbans_show_in_hlsw", "1")
   pcvar_show_hud_messages   =    register_cvar("amxbans_show_hud_messages", "1")
   pcvar_higher_ban_time_admin =    register_cvar("amxbans_higher_ban_time_admin", "n")
   pcvar_admin_mole_access =    register_cvar("amxbans_admin_mole_access", "r")
   pcvar_show_name_evenif_mole =    register_cvar("amxbans_show_name_evenif_mole", "1")
   pcvar_custom_statictime =   register_cvar("amxbans_custom_statictime","1440")
   pcvar_show_prebanned    =   register_cvar("amxbans_show_prebanned","1")
   pcvar_show_prebanned_num =   register_cvar("amxbans_show_prebanned_num","2")
   pcvar_default_banreason   =   register_cvar("amxbans_default_ban_reason","unknown")
   
   register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<steamID or nickname or #authid or IP> <time in mins> <reason>")
   register_srvcmd("amx_ban", "cmdBan", -1, "<steamID or nickname or #authid or IP> <time in mins> <reason>")
   register_concmd("amx_banip", "cmdBan", ADMIN_BAN, "<steamID or nickname or #authid or IP> <time in mins> <reason>")
   register_srvcmd("amx_banip", "cmdBan", -1, "<steamID or nickname or #authid or IP> <time in mins> <reason>")
   
   register_srvcmd("amx_list", "cmdLst", ADMIN_RCON, "sends playerinfos to web")
   
   g_coloredMenus       =    colored_menus()
   g_MyMsgSync       =    CreateHudSyncObj()
   
   g_banReasons      =   ArrayCreate(128,7)
   g_banReasons_Bantime    =   ArrayCreate(1,7)
   
   g_disconPLname      =   ArrayCreate(32,1)
   g_disconPLauthid   =   ArrayCreate(35,1)
   g_disconPLip      =   ArrayCreate(22,1)
   
   
   new configsDir[64]
   get_configsdir(configsDir, 63)
   
   server_cmd("exec %s/sql.cfg", configsDir)
   server_cmd("exec %s/amxbans.cfg", configsDir)
   
   color_chat_init()
}
create_forwards() {
   MFHandle[Ban_MotdOpen]=CreateMultiForward("amxbans_ban_motdopen",ET_IGNORE,FP_CELL)
   MFHandle[Player_Flagged]=CreateMultiForward("amxbans_player_flagged",ET_IGNORE,FP_CELL,FP_CELL,FP_STRING)
   MFHandle[Player_UnFlagged]=CreateMultiForward("amxbans_player_unflagged",ET_IGNORE,FP_CELL)
}
public addMenus() {
   new szKey[64]
   format(szKey,charsmax(szKey),"%L",LANG_SERVER,"ADMMENU_FLAGGING")
   AddMenuItem(szKey,"amx_flaggingmenu",ADMIN_BAN,PLUGIN_NAME)
   format(szKey,charsmax(szKey),"%L",LANG_SERVER,"ADMMENU_DISCONNECTED")
   AddMenuItem(szKey,"amx_bandisconnectedmenu",ADMIN_BAN,PLUGIN_NAME)
   format(szKey,charsmax(szKey),"%L",LANG_SERVER,"ADMMENU_HISTORY")
   AddMenuItem(szKey,"amx_banhistorymenu",ADMIN_BAN,PLUGIN_NAME)
}
//forward from amxbans_core
public amxbans_sql_initialized(Handle:sqlTuple,dbPrefix[]) {
   
   copy(g_dbPrefix,charsmax(g_dbPrefix),dbPrefix)
   //db was already initialized, second init can be caused by a second forward from main plugin
   //this should never happen!!
   if(g_SqlX != Empty_Handle) {
      log_amx("[AMXBans Error] DB Info Tuple from amxbans_core initialized twice!!")
      return PLUGIN_HANDLED
   }
   
   g_SqlX=sqlTuple
   if ( get_pcvar_num(pcvar_debug) >= 1 )
      log_amx("[AMXBans] Received DB Info Tuple from amxbans_core: %d | %s", sqlTuple,g_dbPrefix)
   if(g_SqlX==Empty_Handle) {
      log_amx("[AMXBans Error] DB Info Tuple from amxbans_main is empty! Trying to get a valid one")
      new host[64], user[64], pass[64], db[64]

      get_cvar_string("amx_sql_host", host, 63)
      get_cvar_string("amx_sql_user", user, 63)
      get_cvar_string("amx_sql_pass", pass, 63)
      get_cvar_string("amx_sql_db", db, 63)
      
      g_SqlX = SQL_MakeDbTuple(host, user, pass, db)
      
      get_cvar_string("amx_sql_prefix",g_dbPrefix,charsmax(g_dbPrefix))
   }
   create_forwards()
   set_task(0.1, "banmod_online")
   set_task(0.2, "fetchReasons")
   set_task(2.0, "addMenus")
   
   return PLUGIN_HANDLED
}
/*
public plugin_cfg() {
   //set_task(0.1, "sql_init")
}
public sql_init() {
   new host[64], user[64], pass[64], db[64]

   get_cvar_string("amx_sql_host", host, 63)
   get_cvar_string("amx_sql_user", user, 63)
   get_cvar_string("amx_sql_pass", pass, 63)
   get_cvar_string("amx_sql_db", db, 63)
   
   get_cvar_string("amx_sql_prefix",g_dbPrefix,charsmax(g_dbPrefix))
   //amxbans_get_db_prefix(g_dbPrefix,charsmax(g_dbPrefix))
   
   g_SqlX = SQL_MakeDbTuple(host, user, pass, db)
   
   create_forwards()
   set_task(0.1, "banmod_online")
   set_task(0.2, "fetchReasons")
   set_task(2.0, "addMenus")
}
*/
//////////////////////////////////////////////////////////////////
public get_higher_ban_time_admin_flag() {
   new flags[24]
   get_pcvar_string(pcvar_higher_ban_time_admin, flags, 23)
   
   return(read_flags(flags))
}
public get_admin_mole_access_flag() {
   new flags[24]
   get_pcvar_string(pcvar_admin_mole_access, flags, 23)
   
   return(read_flags(flags))
}
public delayed_kick(player_id) {
   
   player_id-=200
   new userid = get_user_userid(player_id)
   new kick_message[128]
   
   format(kick_message,127,"%L", player_id,"KICK_MESSAGE")

   if ( get_pcvar_num(pcvar_debug) >= 1 )
      log_amx("[AMXBANS DEBUG] Delayed Kick ID: <%d>", player_id)

   server_cmd("kick #%d  %s",userid, kick_message)
   
   g_kicked_by_amxbans[player_id]=true
   g_being_banned[player_id] = false
   
   return PLUGIN_CONTINUE
}
public event_new_round() {
   new plnum=get_maxplayers()
   for(new i=1;i <= plnum; i++) {
      if(g_nextround_kick[i]) {
         if ( get_pcvar_num(pcvar_debug) >= 1 )
            log_amx("[AMXBans] New Round Kick ID: <%d> | bid:%d",i,g_nextround_kick_bid[i])
         
         if(!is_user_connected(i) || is_user_bot(i)) continue
         //player is banned, so select motd and kick him
         select_amxbans_motd(0,i,g_nextround_kick_bid[i])
      }
   }
}
/*********  Error handler  ***************/
MySqlX_ThreadError(szQuery[], error[], errnum, failstate, id) {
   if (failstate == TQUERY_CONNECT_FAILED) {
      log_amx("%L", LANG_SERVER, "TCONNECTION_FAILED")
   } else if (failstate == TQUERY_QUERY_FAILED) {
      log_amx("%L", LANG_SERVER, "TQUERY_FAILED")
   }
   log_amx("%L", LANG_SERVER, "TQUERY_ERROR", id)
   log_amx("%L", LANG_SERVER, "TQUERY_MSG", error, errnum)
   log_amx("%L", LANG_SERVER, "TQUERY_STATEMENT", szQuery)
}
/*********    client functions     ************/
public client_authorized(id) {
   //fix for the invalid tuple error at mapchange, only a fast fix now
   if(g_SqlX==Empty_Handle) {
      set_task(2.0,"client_authorized",id)
      return PLUGIN_HANDLED
   }
   //check if an activ ban exists
   check_player(id)
   return PLUGIN_CONTINUE
}
public client_putinserver(id) {
   //fix for the invalid tuple error at mapchange, only a fast fix now
   if(g_SqlX==Empty_Handle) {
      set_task(5.0,"client_putinserver",id)
      return PLUGIN_HANDLED
   }
   //check if the player was banned before
   prebanned_check(id)
   //remove the player from the disconnect player list because he is already connected ;-)
   disconnect_remove_player(id)
   return PLUGIN_CONTINUE
}
public client_disconnect(id) {
   
   g_being_banned[id]=false
   
   if(!g_kicked_by_amxbans[id]) {
      //only add players to disconnect list if not kicked by amxbans
      disconnected_add_player(id)
   } else if(g_being_flagged[id]) {
      // if kicked by amxbans maybe remove the flagged, not added yet
      /*****///remove_flagged_by_steam(0,id,0)
   }
   //reset some vars
   g_kicked_by_amxbans[id]=false
   g_being_flagged[id]=false
   g_nextround_kick[id]=false
}
/*********    timecmd functions     ************/
public setHighBantimes() {
   new arg[32]
   new argc = read_argc() - 1
   g_highbantimesnum = argc

   if(argc < 1 || argc > 14) {
      log_amx("[AMXBANS] You have more than 14 or less than 1 bantimes set in amx_sethighbantimes")
      log_amx("[AMXBANS] Loading default bantimes")
      loadDefaultBantimes(1)

      return PLUGIN_HANDLED
   }

   new i = 0
   new num[32], flag[32]
   while (i < argc)   {
      read_argv(i + 1, arg, 31)
      parse(arg, num, 31, flag, 31)

      if(equali(flag, "m")) {
         g_HighBanMenuValues[i] = str_to_num(num)
      } else if(equali(flag, "h")) {
         g_HighBanMenuValues[i] = (str_to_num(num) * 60)
      } else if(equali(flag, "d")) {
         g_HighBanMenuValues[i] = (str_to_num(num) * 1440)
      } else if(equali(flag, "w")) {
         g_HighBanMenuValues[i] = (str_to_num(num) * 10080)
      }
      i++
   }
   return PLUGIN_HANDLED
}
public setLowBantimes() {
   new arg[32]
   new argc = read_argc() - 1
   g_lowbantimesnum = argc
   
   if(argc < 1 || argc > 14) {
      log_amx("[AMXBANS] You have more than 14 or less than 1 bantimes set in amx_setlowbantimes")
      log_amx("[AMXBANS] Loading default bantimes")
      loadDefaultBantimes(2)
      
      return PLUGIN_HANDLED
   }

   new i = 0
   new num[32], flag[32]
   while (i < argc) {
      read_argv(i + 1, arg, 31)
      parse(arg, num, 31, flag, 31)

      if(equali(flag, "m")) {
         g_LowBanMenuValues[i] = str_to_num(num)
      } else if(equali(flag, "h")) {
         g_LowBanMenuValues[i] = (str_to_num(num) * 60)
      } else if(equali(flag, "d")) {
         g_LowBanMenuValues[i] = (str_to_num(num) * 1440)
      } else if(equali(flag, "w")) {
         g_LowBanMenuValues[i] = (str_to_num(num) * 10080)
      }
      i++
   }
   return PLUGIN_HANDLED
}
public setFlagTimes() {
   new arg[32]
   new argc = read_argc() - 1
   g_flagtimesnum = argc
   if(argc < 1 || argc > 14) {
      log_amx("[AMXBANS] You have more than 14 or less than 1 flagtimes set in amx_setflagtimes")
      log_amx("[AMXBANS] Loading default flagtimes")
      loadDefaultBantimes(3)
      
      return PLUGIN_HANDLED
   }
   
   new i = 0
   new num[32], flag[32]
   while (i < argc) {
      read_argv(i + 1, arg, 31)
      parse(arg, num, 31, flag, 31)

      if(equali(flag, "m")) {
         g_FlagMenuValues[i] = str_to_num(num)
      } else if(equali(flag, "h")) {
         g_FlagMenuValues[i] = (str_to_num(num) * 60)
      } else if(equali(flag, "d")) {
         g_FlagMenuValues[i] = (str_to_num(num) * 1440)
      } else if(equali(flag, "w")) {
         g_FlagMenuValues[i] = (str_to_num(num) * 10080)
      }
      i++
   }
   return PLUGIN_HANDLED
}
loadDefaultBantimes(num) {
   if(num == 1 || num == 0)
      server_cmd("amx_sethighbantimes 5 60 240 600 6000 0")
   if(num == 2 || num == 0)
      server_cmd("amx_setlowbantimes 5 30 60 480 600 1440")
   if(num == 3 || num == 0)
      server_cmd("amx_setflagtimes 60 240 600 1440 10080 40320 90720 0")
}
/*********    mysql escape functions     ************/
mysql_escape_string(const source[],dest[],len)
{
   copy(dest, len, source);
   replace_all(dest,len,"\\","\\\\");
   replace_all(dest,len,"\0","\\0");
   replace_all(dest,len,"\n","\\n");
   replace_all(dest,len,"\r","\\r");
   replace_all(dest,len,"\x1a","\Z");
   replace_all(dest,len,"'","\'");
   replace_all(dest,len,"^"","\^"");
}
mysql_get_username_safe(id,dest[],len) {
   new name[128]
   get_user_name(id,name,127)
   mysql_escape_string(name,dest,len)
}
mysql_get_servername_safe(dest[],len) {
   new server_name[256]
   get_cvar_string("hostname", server_name, charsmax(server_name))
   mysql_escape_string(server_name,dest,len)
}


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 21 hozzászólás ]  Oldal 1 2 3 Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 54 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole