- Ошибка
-
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]);
}
}
Возникают ошибки при компиляции этого плагина, перепробовал уже все доступные веб компиляторы