/* AMX Mod X Backwards Compatibility * * by the AMX Mod X Development Team * * This file is provided as is (no warranties). */ #if defined _amxmod_included #endinput #endif #define _amxmod_included #if !defined AMXMOD_BCOMPAT #define AMXMOD_BCOMPAT #endif #include <amxmodx> #include <cstrike> #include <engine> #include <fun> #include <maths> stock AMX_VERSION[] = "1.76-BC"; #define ADMIN_PERMBAN ADMIN_BAN //AMX Mod admin flag for permanent ban #define ADMIN_UNBAN ADMIN_BAN //AMX Mod admin flag for unbanning #define ADMIN_SUPREME ADMIN_IMMUNITY //AMX Mod admin flag for "super admin" (can kick, slap, ban, slay admins with Immunity) /* Core will identify us as an "old plugin" this way. */ public __b_old_plugin = 1; public __b_ident_vers() { return __b_old_plugin; } stock user_spawn(index) return spawn(index); stock get_logfile( name[], len ) return get_time("admin%m%d.log",name,len); stock get_user_money(index) return cs_get_user_money(index); stock set_user_money(index,money,flash=1) return cs_set_user_money(index,money,flash); stock numtostr(num,string[],len) return num_to_str(num,string,len); stock strtonum(const string[]) return str_to_num(string); stock build_path(path[], len, {Float,_}:... ) { format_args(path, len, 2); new pathlen = strlen(path); new basedir[32]; if (containi(path, "$basedir") != -1) { get_localinfo("amxx_basedir", basedir, 31); if (!basedir[0]) { copy(basedir, 31, "addons/amxmodx"); } if ((pathlen+strlen(basedir)-strlen("$basedir")) < len) { replace(path, len, "$basedir", basedir); } } new dir[64], subdir[63]; if (containi(path, "$configdir") != -1) { get_localinfo("amxx_configsdir", dir, 63); if (!dir[0]) { format(dir, 63, "%s/configs", basedir); } if ((pathlen+strlen(basedir)-strlen("$configdir")) < len) { replace(path, len, "$configdir", dir); } dir[0] = '^0'; } if (containi(path, "$langdir") != -1) { get_localinfo("amxx_datadir", subdir, 63); if (!subdir[0]) { format(subdir, 63, "%s/data", basedir); } format(dir, 63, "%s/amxmod-lang", subdir); if ((pathlen+strlen(basedir)-strlen("$langdir")) < len) { replace(path, len, "$langdir", dir); } dir[0] = '^0'; } if (containi(path, "$modulesdir") != -1) { get_localinfo("amxx_modules", dir, 63); if (!dir[0]) { format(dir, 63, "%s/modules", basedir); } if ((pathlen+strlen(basedir)-strlen("$modulesdir")) < len) { replace(path, len, "$modulesdir", dir); } dir[0] = '^0'; } if (containi(path, "$pluginsdir") != -1) { get_localinfo("amx_pluginsdir", dir, 63); if( !dir[0]) { format(dir, 63, "%s/plugins", basedir); } if ((pathlen+strlen(basedir)-strlen("$pluginsdir")) < len) { replace(path, len, "$pluginsdir", dir); } dir[0] = '^0'; } if (containi(path, "$logdir") != -1) { get_localinfo("amx_logs", dir, 63); if (!dir[0]) { format(dir, 63, "%s/logs", basedir); } if ((pathlen+strlen(basedir)-strlen("$logdir")) < len) { replace(path, len, "$logdir", dir); } } return 1; } stock is_user_authorized(id) { static auth[32]; get_user_authid(id, auth, 31); if (auth[0] == 0 || equali(auth, "STEAM_ID_PENDING")) { return 0; } return 1; } /* Vector AMX Mod compatibility */ #define ANGLEVECTORS_FORWARD 1 #define ANGLEVECTORS_RIGHT 2 #define ANGLEVECTORS_UP 3 stock angle_to_vector(Float:vector[3], FRU, Float:ret[3]) { return angle_vector(vector, FRU, ret); } stock get_cmdaccess(cmd[], accessflags[], len) { new num = get_concmdsnum(-1); new command[32], info[3]; new flags; for (new i=0; i<num; i++) { get_concmd(i, command, 31, flags, info, 2, -1); if (equal(command, cmd)) { get_flags(flags, accessflags, len); return 1; } } return 0; } stock is_translated(const sentence[]) { return (GetLangTransKey(sentence) != TransKey_Bad); } stock get_plugincmdsnum(plugin[], type=7) { new plid = find_plugin_byfile(plugin); new our_type; /** * Whoever wrote this was a bit confused about the type stuff... */ if (type == 1) { our_type = 1; } else if (type == 4) { our_type = 0; } else { our_type = -1; } new found = 0; new total = get_concmdsnum(-1, our_type); for (new i=0; i<total; i++) { if (plid == get_concmd_plid(i, -1, our_type)) { found++; } } return found; } stock get_plugincmd(plugin[], index, cmd[], len1, accessflags[], len2, info[], len3, destid=-1, type=7) { new plid = find_plugin_byfile(plugin); new our_type; /** * Whoever wrote this was a bit confused about the type stuff... */ if (type == 1) { our_type = 1; } else if (type == 4) { our_type = 0; } else { our_type = -1; } new found_iter = 0; new total = get_concmdsnum(-1, our_type); for (new i=0; i<total; i++) { if (plid == get_concmd_plid(i, -1, our_type)) { if (found_iter == index) { new flags, result; result = get_concmd(i, cmd, len1, flags, info, len3, -1, our_type); get_flags(flags, accessflags, len2); return result; } found_iter++; } } /* get rid of a compiler warning */ destid = -1; return (++destid); } stock get_plugincvar(plugin[], index, cvar[], len1, value[], len2, flags=0) { new plid = find_plugin_byfile(plugin); new total = get_plugins_cvarsnum(); new cvar_flags, plugin_id, pcvar_handle; new iter_id = 0; for (new i=0; i<total; i++) { get_plugins_cvar(i, cvar, len1, cvar_flags, plugin_id, pcvar_handle); if ((plugin_id == plid) && (!flags || (cvar_flags & flags))) { if (iter_id == index) { get_pcvar_string(pcvar_handle, value, len2); return 1; } iter_id++; } } return 0; } stock get_plugincvarsnum(plugin[], flags=0) { new plid = find_plugin_byfile(plugin); new total = get_plugins_cvarsnum(); new cvar_flags, plugin_id; new cvars_total = 0; for (new i=0; i<total; i++) { get_plugins_cvar(i, "", 0, cvar_flags, plugin_id); if ((plugin_id == plid) && (!flags || (cvar_flags & flags))) { cvars_total++; } } return cvars_total; } stock is_module_running(const module[]) { if (strcmp(module, "MySQL Access") == 0) return LibraryExists("sqlx", LibType_Class); return is_module_loaded(module) == -1 ? 0 : 1; } stock is_plugin_running(const plugin[]) { new status[8]; new id, filename[1], name[1], version[1], author[1]; id = is_plugin_loaded(plugin); get_plugin(id, filename, 0, name, 0, version, 0, author, 0, status, 7); return strcmp(status, "running") == 0 ? id + 1 : 0; }