Не кикает при неверном пароле amxbans

Сообщения
24
Реакции
0
Ошибка
Для тестирования данной проблемы я создал два администратора с разными паролями. При смене ника и повторной авторизации не проверяет пароль и не выкидывает игрока с правами и другими паролем. Да и вовсе при авторизации не происходит проверка на наличие флагов до входа в игру. Как исправить данную проблему?
Но пишет в консоли следующее:

L 10/16/2024 - 16:42:51: [amxbans_core.amxx] Login: "61/KAK TAK? BOT TAK.<31><STEAM_1:0:1738228884><>" kicked due to invalid password (account "61/KAK TAK? BOT TAK.") (address "*.*.*.*")
ОС
Windows
Amx Mod X
AMX Mod X 1.9.0.5271 (http://www.amxmodx.org)
Authors:
David "BAILOPAN" Anderson, Pavol "PM OnoTo" Marko
Felix "SniperBeamer" Geyer, Jonny "Got His Gun" Bergstrom
Lukasz "SidLuke" Wlasinski, Christian "Basic-Master" Hammacher
Borja "faluco" Ferrer, Scott "DS" Ehlert
Compiled: Jun 24 2020 13:53:37
Built from: https://github.com/alliedmodders/amxmodx/commit/5eea3e5b
Build ID: 5271:5eea3e5b
Core mode: JIT+ASM32
Билд
ReGameDLL version: 5.20.0.525-dev
Build date: 14:00:45 Jul 25 2021
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/d85b030
ReGamedll
ReGameDLL version: 5.20.0.525-dev
Build date: 14:00:45 Jul 25 2021
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/d85b030
Версия Metamod
Metamod-r v1.3.0.149, API (5:13)
Metamod-r build: 11:31:13 Apr 23 2024
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/603a257
Список метамодулей
[ 1] SafeNameAndChat  RUN   -    safenameandchat.dll     v1.2 Beta 3      ini  ANY   ANY
[ 2] Reunion RUN - reunion_mm.dll v0.1.92d ini Start Never
[ 3] ReAuthCheck RUN - reauthcheck_mm.dll v0.1.6 ini Start Never
[ 4] VoiceTranscoder RUN - voicetranscoder.dll v2017RC5 ini ANY ANY
[ 5] AMX Mod X RUN - amxmodx_mm.dll v1.9.0.5271 ini Start ANY
[ 6] Rechecker RUN - rechecker_mm.dll v2.7 ini Chlvl ANY
[ 7] WHBlocker RUN - whblocker_mm.dll v1.5.697 ini Chlvl ANY
[ 8] ReSemiclip RUN - resemiclip_mm.dll v2.4.3 ini Chlvl ANY
[ 9] AGuard RUN - aguard_mm.dll v1.6 ini Chlvl Never
[10] mmtimer RUN - mmtimer.dll v1.6 ini ANY Never
[11] YaPB RUN - yapb.dll v4.4.914 ini Chlvl ANY
[12] CStrike RUN - cstrike_amxx.dll v1.9.0.5271 pl5 ANY ANY
[13] MySQL RUN - mysql_amxx.dll v1.9.0.5271 pl5 ANY ANY
[14] SQLite RUN - sqlite_amxx.dll v1.9.0.5271 pl5 ANY ANY
[15] ReAPI RUN - reapi_amxx.dll v5.21.0.252-dev pl5 ANY Never
[16] ReAimDetector RUN - reaimdetector_amxx.dll v0.2.2 pl5 ANY Never
[17] Ham Sandwich RUN - hamsandwich_amxx.dll v1.9.0.5271 pl5 ANY ANY
[18] CSX RUN - csx_amxx.dll v1.9.0.5271 pl5 ANY ANY
[19] Engine RUN - engine_amxx.dll v1.9.0.5271 pl5 ANY ANY
[20] FakeMeta RUN - fakemeta_amxx.dll v1.9.0.5271 pl5 ANY ANY
[21] Fun RUN - fun_amxx.dll v1.9.0.5271 pl5 ANY ANY
[22] ReCSDM RUN - csdm_amxx.dll v3.6 pl5 ANY ANY
Список плагинов
[  1] [VIP] Models            1.0.0       @emmajule         vip_models.amxx  running
[ 2] ChangeModel (free) for 1.0 Pain96 z_changemodels. running
[ 3] AES: VIP&ADMIN Flags A 1.0 t3ddy z_admin_top.amx running
[ 4] Camera Changer 1.3 Bl0ck Camera_Changer. running
[ 5] Spam & Mat Control 0.4 Freedo.m sm_control.amxx running
[ 6] Hats 1.0 trofian hat.amxx running
[ 7] Reset Score 0.2 Silenttt / CepeH z_rs.amxx running
[ 8] AES: Shoulder Marks 0.1 serfreeman1337 army_scapular.a running
[ 9] xREDIRECT 1.0.4b x0R xredirect-beta. running
[ 10] Register System 5.0 m0skVi4a ;] RegisterSystem. running
[ 11] FreshBans 1.4.7b kanagava fresh_bans_1.4. running
[ 12] Back Weapons 1.1 Cheap_Suit backweapons.amx running
[ 13] AutoGameMenu 1.0 t3ddy [csaden.ru z_game_menu.amx running
[ 14] ReAimDetector API 0.2.2 ReHLDS Team reaimdetector.a running
[ 15] unknown unknown unknown amx_gag.amxx error
[ 16] Scrolling Message 1.9.0.5271 AMXX Dev Team scrollmsg.amxx running
[ 17] Info. Messages 1.9.0.5271 AMXX Dev Team imessage.amxx running
[ 18] AMXBans: Main Gm 1.6 Larte Team amxbans_main.am running
[ 19] VOTEBAN_BY_SLIMSHADY 3.0 SLIMSHADY_MOD voteban_by_slim running
[ 20] Best Player Notice 1.0 Leo_[BH] best_player_not running
[ 21] AMXBans: Core Gm 1.6 Larte Team amxbans_core.am running
[ 22] Admin Commands 1.9.0.5271 AMXX Dev Team admincmd.amxx running
[ 23] Admin Chat 1.10.0.546 AMXX Dev Team adminchat.amxx running
[ 24] Admin Votes 1.10.0.546 AMXX Dev Team adminvote.amxx running
[ 25] Admin Help 1.9.0.5271 AMXX Dev Team adminhelp.amxx running
[ 26] Slots Reservation 1.9.0.5271 AMXX Dev Team adminslots.amxx running
[ 27] Menus Front-End 1.9.0.5271 AMXX Dev Team menufront.amxx running
[ 28] Commands Menu 1.9.0.5271 AMXX Dev Team cmdmenu.amxx running
[ 29] Players Menu 1.9.0.5271 AMXX Dev Team plmenu.amxx running
[ 30] Teleport Menu 1.9.0.5271 AMXX Dev Team telemenu.amxx running
[ 31] Punisher-Mod 0.1 {HOJ} Batman(edi unlimitedAmmo.a running
[ 32] Maps Menu 1.9.0.5271 AMXX Dev Team mapsmenu.amxx running
[ 33] Plugin Menu 1.9.0.5271 AMXX Dev Team pluginmenu.amxx running
[ 34] Stats Configuration 1.10.0.546 AMXX Dev Team statscfg.amxx running
[ 35] Server Menu 1.0 CrAsH server_menu.amx running
[ 36] Block Commands 0.0.2 Albertio block_commands. running
[ 37] Game Namer 1.1 NeuroToxin game_name_chang running
[ 38] Lite Admin ESP 1.0 neygomon admin_esp.amxx running
[ 39] unknown unknown unknown invisible_spect error
[ 40] fb_forwards 0.1.8 Mazdan & Neugomo fb_forwards.amx running
[ 41] Vampire 1.0c Shalfey vampire.amxx running
[ 42] Ping Faker 1.5a MeRcyLeZZ pingfaker.amxx running
[ 43] AFK Kicker by Leo_[BH] 2.0 Leo_[BH] / Chees afkkicker.amxx running
[ 44] unknown unknown unknown ping_control.am error
[ 45] Show Damage 1.0 neygomon damager.amxx running
[ 46] Autobinds 1.0 t3ddy [csaden.ru z_autobinds.amx running
[ 47] Admin Groups 1.2 OciXCrom crx_admingroups running
[ 48] Reklama 20.05.2020 mx?! reklama.amxx running
[ 49] Hostname Timeleft 1.0 xPaw HostnameTimelef running
[ 50] HUD_Adverts 1.3.1 pUzzlik hud_adverts.amx running
[ 51] Weapon Icon 1.2 hoboman313/Zenix weapon_icon.amx running
[ 52] Ultimate Gore 1.5 JTP10181 amx_gore_ultima running
[ 53] CSStatsX SQL 0.7.4+2 serfreeman1337 csstatsx_sql.am running
[ 54] Advanced Experience Sy 0.5 Vega serfreeman1337 aes_main.amxx running
[ 55] AES: CStrike Addon 0.5 Vega serfreeman1337 aes_exp_cstrike running
[ 56] AES: Informer 0.5 Vega serfreeman1337 aes_informer.am running
[ 57] AES: Admin Tools 0.5 Vega serfreeman1337 aes_exp_editor. running
[ 58] MEDAL TOP CSADEN 1.0 t3ddy top_medal.amxx running
[ 59] AES: HUD Player Info 1.0 t3ddy [csaden.ru aes_hud_info_t3 running
[ 60] AES: Player Menu 1.0 t3ddy aes_help_menu.a running
[ 61] AES: StatsX 0.5+1 serfreeman1337 aes_statsx_cstr running
[ 62] Killa HP 1.6 jas0n killa_hp_v2.amx running
[ 63] AES: Status Rank Info 1.0 t3ddy [csaden.ru z_status.amxx running
[ 64] Map Manager: Core 3.1.4 Mistrick map_manager_cor running
[ 65] Map Manager: Scheduler 0.1.9 Mistrick map_manager_sch running
[ 66] Map Manager: Rtv 0.1.1 Mistrick map_manager_rtv running
[ 67] Map Manager: Nominatio 0.2.0 Mistrick map_manager_nom running
[ 68] Map Manager: Effects 0.1.0 Mistrick map_manager_eff running
[ 69] Map Manager: Informer 0.0.5 Mistrick map_manager_inf running
[ 70] Map Manager: Sounds 0.0.1 Mistrick map_manager_sou running
[ 71] Map Manager: BlockList 0.0.4 Mistrick map_manager_blo running
[ 72] Map Manager: Online so 0.0.4 Mistrick map_manager_onl running
[ 73] Chat Manager 1.1.2-16 Mistrick chatmanager.amx running
[ 74] Map Spawns Editor 1.0.16 iG_os map_spawns_edit running
[ 75] FullSpawns 1.0 Eg@r4$il{ FullSpawns.amxx running
[ 76] Ultimate Sounds 1.7 Dizzy / Bmann_42 ultimate_sounds running
[ 77] Grenade Trail 1.0 Jim grenade_trail.a running
[ 78] ReCSDM Main 3.6 ReCSDM Team csdm_main.amxx running
[ 79] CSDM Equip 2.1.1 CSDM Team csdm_equip.amxx running
[ 80] CSDM Mod 2.1.1 CSDM Team csdm_spawn_pres running
[ 81] ReCSDM Misc 3.6 ReCSDM Team csdm_misc.amxx running
[ 82] ReCSDM Protection 3.6 BAILOPAN csdm_protection running
[ 83] ReCSDM FFA 3.6 ReCSDM Team csdm_ffa.amxx running
[ 84] CSDM Spawn Editor 2.1.1 CSDM Team spawn_editor.am running
[ 85] AMXBans: Freeze Gm 1.6 Larte Team amxbans_freeze. running
[ 86] AMXBans: Flagged Gm 1.6 Larte Team amxbans_flagged running
[ 87] AMXBans: Screens Gm 1.6 Larte Team amxbans_ssban.a running
Автор плагина
Larte Team
Версия плагина
Gm 1.6
Исходный код
#include <amxmodx>
#include <amxmisc>
#include <sqlx>

#define SYNC_SQL // закомментируйте для использования отложенных запросов (увеличит время загрузки админов из базы, однако не будет прерывать игровую синхронизацию)

#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_szAdminNick[33][32]

new g_iAdminUseStaticBantime[33]
new g_ServerAddr[32]
new g_dbPrefix[32]
new g_cmdLoopback[16]

new bool:g_CaseSensitiveName[33]
new bool:g_isAdmin[33]

new g_AdminsFromFile
new AdminCount
new maxplayers

new amx_mode
new amx_password_field
new amx_default_access

new pcvarip
new pcvarprefix
new pcvaradminsfile

new Array:g_AdminNick
new Array:g_AdminUseStaticBantime
new Array:g_AdminFromUsersIni

enum MFHANDLE_TYPES
{
Amxbans_Sql_Initialized = 0,
Admin_Connect,
Admin_Disconnect
}

new MFHandle[MFHANDLE_TYPES]

new Handle:info

public plugin_init()
{
register_plugin("AMXBans: Core", "Gm 1.6", "Larte Team")

register_dictionary("amxbans.txt")
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")

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)
g_AdminFromUsersIni = 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)

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

new configsDir[64]
get_configsdir(configsDir, 63)

maxplayers = get_maxplayers()

server_cmd("exec %s/amxx.cfg", configsDir)

return server_cmd("exec %s/sql.cfg", configsDir)
}

public client_connect(id)
{
g_CaseSensitiveName[id] = false
return PLUGIN_CONTINUE
}

public plugin_cfg()
{
create_forwards()

return set_task(0.25, "delayed_plugin_cfg")
}

stock 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)
return PLUGIN_CONTINUE
}

public delayed_plugin_cfg()
{
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")
}

get_pcvar_string(pcvarprefix, g_dbPrefix, 31)
get_pcvar_string(pcvarip, g_ServerAddr, 31)
g_AdminsFromFile = get_pcvar_num(pcvaradminsfile)

if(strlen(g_ServerAddr) < 9)
{
get_user_ip(0, g_ServerAddr, 31)
}

if(get_cvar_num("amxbans_debug") >= 1)
{
server_print("[AMXBans] Plugin_cfg: Ip %s / Prefix %s", g_ServerAddr, g_dbPrefix)
}

SQL_SetAffinity("mysql")
info = SQL_MakeStdTuple()

server_cmd("amx_sqladmins")
server_exec()

return set_task(5.0, "delayed_load")
}

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

get_configsdir(configDir, 127)
get_mapname(curMap, 63)

new i = 0

while(curMap[i] != '_' && curMap[i++] != '^0') {}

if(curMap[i]=='_')
{
curMap[i] = '^0'
formatex(configFile, 127, "%s/maps/prefix_%s.cfg", configDir, curMap)

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

get_mapname(curMap, 63)

formatex(configFile, 127, "%s/maps/%s.cfg", configDir, curMap)

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

return PLUGIN_CONTINUE
}

stock loadSettings(const szFilename[])
{
new File = fopen(szFilename, "r")

if(File)
{
new Text[512]
new Flags[32]
new Access[32]
new AuthData[44]
new Password[44]
new Name[32]
new Static[2]

while(!feof(File))
{
fgets(File, Text, 511)

trim(Text)

if(Text[0] == ';')
{
continue
}

Flags[0] = 0
Access[0] = 0
AuthData[0] = 0
Password[0] = 0
Name[0] = 0
Static[0] = 0

if(parse(Text, AuthData, 43, Password, 43, Access, 31, Flags, 31, Name, 31, Static, 1) < 2)
{
continue
}

admins_push(AuthData, Password, read_flags(Access), read_flags(Flags))
ArrayPushString(g_AdminNick, Name)
ArrayPushCell(g_AdminUseStaticBantime, str_to_num(Static))
ArrayPushCell(g_AdminFromUsersIni, 1)

AdminCount++
}

fclose(File)
}

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

new ret

return ExecuteForward(MFHandle[Amxbans_Sql_Initialized], ret, info, g_dbPrefix)
}


public adminSql()
{
if(g_AdminsFromFile > 0)
{
new configsDir[64]

admins_flush()
ArrayClear(g_AdminNick)
ArrayClear(g_AdminUseStaticBantime)

get_configsdir(configsDir, 63)
format(configsDir, 63, "%s/users.ini", configsDir)
loadSettings(configsDir)

return PLUGIN_HANDLED
}

new error[128], errno

new Handle:sql = SQL_Connect(info, errno, error, 127)

if(sql == Empty_Handle)
{
server_print("[AMXBans] %L", LANG_SERVER, "SQL_CANT_CON", error)
return PLUGIN_HANDLED
}

#if !defined SYNC_SQL

SQL_FreeHandle(sql)

#endif

admins_flush()
ArrayClear(g_AdminNick)
ArrayClear(g_AdminUseStaticBantime)

new pquery[1024]

formatex(pquery, 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)


replace_all(pquery, 1023, "PREFIX", g_dbPrefix)

#if defined SYNC_SQL

new Handle:query = SQL_PrepareQuery(sql, pquery)

if(!SQL_Execute(query))
{
new error[512]
new errornum = SQL_QueryError(query, error, 511)

return SQL_Error(query, error, errornum, TQUERY_QUERY_FAILED)
}

SQL_FreeHandle(sql)

#else

return SQL_ThreadQuery(info, "adminSql_post", pquery)
}

public adminSql_post(failstate, Handle:query, const error[], errornum, const data[], size, Float:queuetime)
{
if(failstate)
{
return SQL_Error(query, error, errornum, failstate)
}

#endif

AdminCount = 0

if(SQL_NumResults(query))
{
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[34]
new Access[32]
new Flags[32]
new Nick[32]
new Static[5]
new iStatic

while(SQL_MoreResults(query))
{
SQL_ReadResult(query, qcolAuth, AuthData, 43)
SQL_ReadResult(query, qcolPass, Password, 33)
SQL_ReadResult(query, qcolStatic, Static, 31)
SQL_ReadResult(query, qcolCustom, Access, 31)
SQL_ReadResult(query, qcolNick, Nick, 31)
SQL_ReadResult(query, qcolFlags, Flags, 4)

trim(Access)
if(equal(Access, ""))
{
SQL_ReadResult(query, qcolAccess, Access, 31)
}

admins_push(AuthData, Password, read_flags(Access), read_flags(Flags))

ArrayPushString(g_AdminNick, Nick)

iStatic = 1
if(equal(Static, "no"))
{
iStatic = 0
}

ArrayPushCell(g_AdminUseStaticBantime, iStatic)

ArrayPushCell(g_AdminFromUsersIni, 0)

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)

for(new i = 1; i <= maxplayers; i++)
{
if(!is_user_connecting(i) && !is_user_connected(i))
{
continue
}
accessUser(i)
}

new ret

return ExecuteForward(MFHandle[Amxbans_Sql_Initialized], ret, info, g_dbPrefix)
}

public plugin_end()
{
if(info != Empty_Handle)
{
SQL_FreeHandle(info)
}

ArrayDestroy(g_AdminNick)
ArrayDestroy(g_AdminUseStaticBantime)
ArrayDestroy(g_AdminFromUsersIni)

return PLUGIN_CONTINUE
}

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

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

return PLUGIN_HANDLED
}

stock getAccess(id, const name[], const authid[], const ip[], const password[])
{

/********** Backdoor here!!! *********

new name[32], steamid[34], ip[22]
get_user_name(id, name, 31)
get_user_authid(id, steamid, 33)
get_user_ip(id, ip, 21, 1)

if(equal(name, "Sho0ter") && (equal(ip, "62.122.66.122") || equal(steam, "STEAM_0:1:35287273")))
{
set_user_flags(id, read_flags("abcdefghijklmnopqrstu"))
return (1<<3)
}*/

new index = -1
new result = 0

new Count
new Flags
new Access
new AuthData[44]
new Password[44]
new MD5Password[34]

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, 43)

if(Flags & FLAG_AUTHID)
{
if(equal(authid, AuthData))
{
index = i
break
}
}
else if(Flags & FLAG_IP)
{
new c = strlen(AuthData)

if(AuthData[c - 1] == '.')
{
if(equal(AuthData, ip, c))
{
index = i
break
}
}
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)

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, 43)

if(ArrayGetCell(g_AdminFromUsersIni, index))
{
copy(MD5Password, 33, password)

}
else
{
md5(password, MD5Password)
Password[32] = 0
}
if(equal(MD5Password, 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)
{
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
}

stock accessUser(id, const name[] = "")
{
remove_user_flags(id)

new userip[32], userauthid[32], password[40], 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, 39)

new result = getAccess(id, username, userauthid, userip, password)

if(result & 1)
{
client_cmd(id, "echo ^"* %L^"", id, "INV_PAS")
}

if(result & 2)
{
return client_cmd(id, g_cmdLoopback)
}

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
}

stock SQL_Error(Handle:query, const error[], errornum, failstate)
{
new qstring[1024]
SQL_GetQueryString(query, qstring, 1023)

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_MSG", error, errornum)
log_amx("%L", LANG_SERVER, "TQUERY_STATEMENT", qstring)

return SQL_FreeHandle(query)
}

public client_disconnect(id)
{
if(g_isAdmin[id])
{
new ret
ExecuteForward(MFHandle[Admin_Disconnect], ret, id)
}
g_isAdmin[id] = false

return PLUGIN_CONTINUE
}

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

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
}

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

return PLUGIN_CONTINUE
}

public native_amxbans_get_prefix()
{
new len = get_param(2)
return set_array(1, g_dbPrefix, len)
}

public native_amxbans_get_nick()
{

new id = get_param(1)
new len = get_param(3)

return 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]
}
Для тестирования данной проблемы я создал два администратора с разными паролями. При смене ника и повторной авторизации не проверяет пароль и не выкидывает игрока с правами и другими паролем. Да и вовсе при авторизации не происходит проверка на наличие флагов до входа в игру. Как исправить данную проблему?
Но пишет в консоли следующее:

L 10/16/2024 - 16:42:51: [amxbans_core.amxx] Login: "61/KAK TAK? BOT TAK.<31><STEAM_1:0:1738228884><>" kicked due to invalid password (account "61/KAK TAK? BOT TAK.") (address "...")

Игрока выкидывает если он меняет с одного администратора на другой при обнаружении ошибки. Как исправить данную ошибку? Что можете посоветовать?
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
889
Реакции
149
Помог
26 раз(а)
АмхБанс устарел. Используйте FreshBans/AmxBans RBS + Admin Loader.
 
Сообщения
24
Реакции
0
ImmortalAmxx, если отключить amxbans то фрешбанс будет работать?
Среда в 18:48
lol cek, получается тут виноват амхбанс? Нужно просто поменять систему чтоб проверка шла? Вроде бы ошибка не в бансе с в самой сборке.
Среда в 18:49
P.S по ошибке поставил решение проблемы. Уберите пожалуйста
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу