- Ошибка
-
AMX Mod X Compiler 1.8.3-dev+5147
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team
langmenu.sma(24) : error 017: undefined symbol "MAX_PLAYERS"
langmenu.sma(24) : error 009: invalid array size (negative or zero)
langmenu.sma(146) : error 017: undefined symbol "client_print_color"
langmenu.sma(146) : warning 215: expression has no effect
langmenu.sma(146) : warning 215: expression has no effect
langmenu.sma(146) : warning 215: expression has no effect
langmenu.sma(146) : error 001: expected token: ";", but found ")"
langmenu.sma(146) : error 029: invalid expression, assumed zero
langmenu.sma(146) : fatal error 107: too many error messages on one line
- Компилятор
- WEB-компилятор
- Amx Mod X
- Исходный код
-
#include <amxmodx> #include <fakemeta> #include <nvault> #define MAX_LANGS_NUM 9 #define MAX_LANG_KEY_LENGTH 3 #define MAX_LANG_NAME_LENGTH 32 enum _:LANG { LANG_KEY[MAX_LANG_KEY_LENGTH], LANG_NAME[MAX_LANG_NAME_LENGTH] } new g_Langs[MAX_LANGS_NUM][LANG], g_LangsNum; new g_DefaultLang; new g_PlayersSettings; new g_PlayersLang[MAX_PLAYERS + 1]; public plugin_init() { register_plugin("Language Menu", "1.0", "F@nt0M"); register_dictionary("langmenu.txt"); // register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged_Post", true); register_menucmd(register_menuid("LANGMENU"), 1023, "HandleMenu"); register_srvcmd("langmenu_add", "CmdAddLang"); register_srvcmd("langmenu_cmd", "CmdAddCmd"); register_clcmd("amx_langmenu", "CmdLangMenu"); register_cvar("langmenu_prune_days", "30"); new path[128]; get_localinfo("amxx_configsdir", path, charsmax(path)); server_cmd("exec %s/langmenu.cfg", path); server_exec(); g_PlayersSettings = nvault_open("players_lang"); } public plugin_cfg() { if (g_LangsNum <= 0) { set_fail_state("Fail to load config"); return; } set_cvar_num("amx_client_languages", 1); new langKey[MAX_LANG_KEY_LENGTH]; get_cvar_string("amx_language", langKey, charsmax(langKey)); g_DefaultLang = findLangId(langKey); if (g_DefaultLang == -1) { g_DefaultLang = 0; } new days = get_cvar_num("langmenu_prune_days"); if (days > 0 && g_PlayersSettings != INVALID_HANDLE) { nvault_prune( g_PlayersSettings , 0 , get_systime() - (days * 86400)); } } public plugin_end() { if (g_PlayersSettings != INVALID_HANDLE) { nvault_close(g_PlayersSettings); } } public client_authorized(id) { new authid[24], langKey[MAX_LANG_KEY_LENGTH + 1], lang; get_user_authid(id, authid, charsmax(authid)); if (nvault_lookup(g_PlayersSettings, authid, langKey, charsmax(langKey), lang)) { lang = findLangId(langKey); if (lang != -1) { setUserLang(id, lang, false); nvault_touch(g_PlayersSettings, authid, -1); } else { setUserLang(id, g_DefaultLang, true); } } else { get_user_info(id, "lang", langKey, charsmax(langKey)) lang = findLangId(langKey); if (lang != -1) { setUserLang(id, lang, false); } else { setUserLang(id, g_DefaultLang, true); } } } public CmdAddCmd() { new cmd[32]; if (read_args(cmd, charsmax(cmd)) > 0) { remove_quotes(cmd); trim(cmd); if (strlen(cmd) > 0) { register_clcmd(cmd, "CmdLangMenu"); } } return PLUGIN_HANDLED; } public CmdAddLang() { if (read_argc() < 2 || g_LangsNum >= MAX_LANGS_NUM) { return PLUGIN_HANDLED; } read_argv(1, g_Langs[g_LangsNum][LANG_KEY], MAX_LANG_KEY_LENGTH); read_argv(2, g_Langs[g_LangsNum][LANG_NAME], MAX_LANG_NAME_LENGTH); g_LangsNum++; return PLUGIN_HANDLED; } public CmdLangMenu(id) { new keys = MENU_KEY_0; new menu[512]; new len = formatex(menu, charsmax(menu), "\r%L^n^n", id, "LANG_MENU_TITLE"); for (new i = 0; i < g_LangsNum; i++) { if (g_PlayersLang[id] == i) { len += formatex(menu[len], charsmax(menu) - len, "\r[\y%i\r]\d %s \y(%L)^n", i + 1, g_Langs[i][LANG_NAME], id, "LANG_MENU_CURRENT"); } else { keys |= (1 << i); len += formatex(menu[len], charsmax(menu) - len, "\r[\y%i\r]\w %s^n", i + 1, g_Langs[i][LANG_NAME]); } } formatex(menu[len], charsmax(menu) - len, "^n\r[\y0\r] \w%L", id, "LANG_MENU_CANCEL"); show_menu(id, keys, menu, -1, "LANGMENU"); return PLUGIN_HANDLED; } public HandleMenu(id, key) { if (key == 9) { return; } if (0 <= key < g_LangsNum) { setUserLang(id, key, true); client_print_color(id, print_team_default, "%L", id, "LANG_MENU_SAVED"); } } findLangId(const lang[]) { for (new i = 0; i < g_LangsNum; i++) { if (equal(g_Langs[i][LANG_KEY], lang)) { return i; } } return -1; } setUserLang(const id, const lang, const bool:save = false) { g_PlayersLang[id] = lang; new infobuffer = engfunc(EngFunc_GetInfoKeyBuffer, id); engfunc(EngFunc_SetClientKeyValue, id, infobuffer, "lang", g_Langs[lang][LANG_KEY]); if (save && g_PlayersSettings != INVALID_HANDLE) { new authid[24], langKey[MAX_LANG_KEY_LENGTH]; get_user_authid(id, authid, charsmax(authid)); copy(langKey, charsmax(langKey), g_Langs[lang][LANG_KEY]); nvault_set(g_PlayersSettings, authid, g_Langs[lang][LANG_KEY]); } }
C++
Возникают ошибки при компиляции этого плагина, перепробовал уже все доступные веб компиляторы