资讯动态

AMXX 1.8.1 多语言版安装与插件加载排查

发布时间:2026/10/26 10:39:48 来源:尧图企业网站定制
简介AMXX 1.8.1 中文、繁體中文与英文版面向 Half-Life 服务器管理员、AMXX 插件开发者及希望进行二次开发的玩家提供基于 MetaMod 的自定义游戏模式、功能增强与脚本编写环境并以三种语言界面降低中文用户的学习、部署与调试门槛。压缩包共 203 个文件、约 3.4MB涵盖 inc 头文件、sma 源码、amxx 编译插件、txt 文档、dll 动态库、exe 工具以及 ini/cfg 配置等既有核心运行组件也保留了可参考的示例插件与说明材料便于按模块查找和搭建测试环境。已有 532 人学习适合具备一定服务器配置基础、想研究插件逻辑或进行二次开发的中级用户。借助其中的管理菜单、统计、投票等示例与文档读者可理解常见功能的实现方式并据此调整参数、扩展自定义玩法或排查插件运行问题也可作为学习 AMXX 编程接口与服务器管理的实践素材。1. AMXX 1.8.1 中文 繁體中文 英文版装错一步服务器能启动但没人能玩AMXX 1.8.1 中文 繁體中文 英文版 这个包最容易出问题的地方不在解压而在顺序Metamod 没挂上AMXX 就完全不加载服务器照样启动、端口照样能连你在客户端里就是看不到菜单、打不开管理员命令。我第一次装的时候连着重传了三次文件最后发现是liblist.gam里那行gamedll_linux指错了路径——这种“服务能开、插件全部不加载”的问题比重装系统还耗时间因为没有任何报错提示。下面这套流程是按 CS1.6 服务端整理的Windows 和 Linux 都覆盖适合自己开服、帮别人搭服以及接手一台要换成 1.8.1 多语言版的老服的人。2. 装前对齐版本AMXX 1.8.1 与 Metamod 1.21p37 的配对清单AMXX 本身不是独立运行的程序它是以 Metamod 插件的形式挂到 HLDS 进程里的所以“装 AMXX”实际是装两层先让 Metamod 能加载再让 AMXX 被 Metamod 加载。很多人把addons/amxmodx整个丢进去就重启然后对着空白的控制台发愣问题往往出在第一层。这一章先把包的内容、服务端的环境和版本选择核对清楚后面两章才动手放文件。2.1 base 包、cstrike 包与语言包各管什么一个完整的 AMXX 1.8.1 多语言包通常拆成三部分作用完全不同别混着装组成部分关键内容作用漏装后果base 基础包dlls/amxmodx_mm_i386.so、modules/、configs/、plugins/、scripting/AMXX 核心、默认配置、默认插件与编译器整个 AMXX 无法加载cstrike 附加包modules/cstrike_amxx_i386.so、csx_amxx_i386.so武器、地图、雷达、C4 这些游戏专属函数扣血、发枪类插件大量 bad load语言包data/lang/*.txt里的[en]、[zh]、[zhtw]段把界面文字换成英文、简体、繁體菜单全是英文或直接乱码语言包的实现方式要说明白AMXX 1.8.1 的语言文件并不是“一种语言一个文件”而是一个 txt 里用[en]、[zh]、[zhtw]这样的段落分块同一行文案在三个段里各写一遍。所以所谓“三语版”是把这些 txt 的中文、繁體中文段补全了不是多出来三个目录。你打开data/lang/amxmodx.txt看第一行就知道这份包的语言代号到底有哪些代号写错amx_language设了也不生效。2.2 服务端环境清点位数、目录与运行库动手前先确认三件事HLDS 是 32 位还是 64 位架构能跑的、游戏目录在哪、AMXX 的日志目录能不能写。老版本的 HLDS 是 32 位程序在 64 位 Linux 上直接跑会遇到缺少运行库先验一遍# 先看主程序是不是 32 位输出里出现 ELF 32-bit 就是 file ./hlds_i686 # 直接查它依赖的动态库有没有缺 ldd ./hlds_i686 | grep -i not found如果第二条命令刷出一堆not found补 32 位运行库Debian/Ubuntu 系常见做法是sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install -y libc6:i386 lib32stdc6file用来看架构ldd看依赖grep not found是为了把真正缺的库挑出来不然一屏几十行看花眼。补完再跑一次ldd没有not found才算环境干净。目录这边AMXX 的所有路径都是相对游戏模组目录CS1.6 是cstrike/来写的所以最终形态一定是cstrike/addons/amxmodx/...。我见过有人解压出一个amxmodx/直接怼在cstrike/下面configs 和 dlls 全错位加载当然是失败的。2.3 为什么停在 1.8.1和老插件的兼容考量1.8.1 之后还有 1.8.2、1.8.3 这类修 bug 的小版本再往后 1.9.x 改过编译器与部分接口到 1.10 又精简了模块。差别不在“谁更强”而在你手里的 .amxx 是哪个版本编译出来的老插件在新核心上可能直接报版本不兼容得拿 .sma 源码重新编译而有些服的插件根本没源码。版本分支大致定位我的取舍1.8.1多语言段齐全老插件兼容面广老服、老插件、要简繁英三语共存首选1.8.2 / 1.8.3以修 bug 为主1.8.1 跑得住就别折腾1.9.x 及以后编译器与部分接口更新只在新写插件时考虑老 .amxx 需重编译一条硬性规矩一台服只留一个 AMXX 主版本。曾经有人在addons下同时留着amxmodx和amxmodx_old两个目录Metamod 的plugins.ini里两行都没注释结果两个核心抢同一份配置报错信息看得人一头雾水。要么留一份要么把旧目录整个移出addons。3. 落地安装把 AMXX 1.8.1 的 dlls、modules、configs 放到正确位置这一章是纯操作按顺序走完就能启动服务。核心就三个动作备份、放 Metamod、放 AMXX 并改两处配置。中间任何一步跳过去后面排查都会变成无效排查。3.1 停服、备份、解包顺序先停服再动文件运行中的进程会锁住.so你覆盖上去的文件可能只写了一半这种半残的文件加载时报的错跟真实原因完全无关。# 进游戏根目录先打一个带日期的备份包 cd /home/hlds tar czf backup-$(date %F-%H%M).tgz cstrike/liblist.gam cstrike/addons # 确认备份真的生成了别只看命令没报错 ls -lh backup-*.tgztar czf里 c 是创建、z 是 gzip、f 指定文件名备份范围刻意选了liblist.gam和整个addons因为 AMXX 装挂了九成要回滚这两个位置其它地图和模型不用动。解包顺序是先 Metamod后 AMXXMetamod 是加载器AMXX 是被加载的对象顺序反了不会报错但你重启后看meta list是空的会误以为是 AMXX 的问题。最终目录结构应该是这样用它对照你上传完的实际情况cstrike/ ├── liblist.gam # 要改指向 metamod └── addons/ ├── metamod/ │ ├── dlls/metamod_i386.so # Linux 加载器 │ └── plugins.ini # 要改指向 amxmodx_mm └── amxmodx/ ├── dlls/amxmodx_mm_i386.so # AMXX 核心 ├── modules/ # cstrike_amxx 等模块 ├── configs/ # core.ini / modules.ini / plugins.ini ├── data/lang/ # 三语 txt 在这里 ├── plugins/ # .amxx 插件本体 ├── scripting/ # amxxpc 编译器与 include └── logs/ # 日志排错全靠它3.2 两处挂载liblist.gam 与 metamod 的 plugins.ini第一处改cstrike/liblist.gam把游戏主 DLL 指向 Metamod。改之前先看一眼原值方便回滚; cstrike/liblist.gam —— 只贴相关两行其它保持原样 ; 原值一般是 dlls/cs_i386.so先注释留档 ; gamedll_linux dlls/cs_i386.so gamedll_linux addons/metamod/dlls/metamod_i386.so ; Windows 服务端改这一行路径用反斜杠 ; gamedll addons\metamod\dlls\metamod.dllgamedll_linux是 Linux 服的入口gamedll是 Windows 服的入口两个平台各改各的别同时写。路径是相对cstrike/的前面不要加/home/hlds/cstrike这种绝对路径——这是我第一次装时最直接的翻车点绝对路径在多数情况下会被当成相对路径解析然后加载失败。第二处改cstrike/addons/metamod/plugins.ini告诉 Metamod 去加载谁; cstrike/addons/metamod/plugins.ini ; 格式平台 相对路径 [加载参数] linux addons/amxmodx/dlls/amxmodx_mm_i386.so win32 addons/amxmodx/dlls/amxmodx_mm.dll ; 排查阶段可以临时加 debug日志会详细到每一行初始化 ; linux addons/amxmodx/dlls/amxmodx_mm_i386.so debug第一列linux/win32是平台标识写错平台那行会被静默跳过表现就是“配置明明写了却不加载”。路径同样相对cstrike/。debug参数不是必须的但排查加载失败时它是唯一的黑匣子——加不加日志详细程度差一个量级。3.3 Linux 下的权限与目录可执行位文件传完之后权限是 Linux 上第二大坑。AMXX 加载.so靠的是动态库加载目录没有可执行位加载一定失败而且报错只说 couldnt load看不出是权限问题。# 归属统一给跑服的用户别用 root 跑服 chown -R hlds:hlds cstrike/addons/amxmodx cstrike/addons/metamod # 目录必须有 xdlls 与 modules 单独再给一遍 755 find cstrike/addons -type d -exec chmod 755 {} \; chmod 755 cstrike/addons/amxmodx/dlls/*.so cstrike/addons/amxmodx/modules/*.so # 日志和数据目录要给写权限否则日志永远是空的 chmod -R 775 cstrike/addons/amxmodx/logs cstrike/addons/amxmodx/datafind ... -exec chmod 755 {} \;是递归给所有目录补可执行位比手写几十条chmod可靠.so单独一条是为了保证文件本身可读可执行。logs和data给写权限这件事最容易被忽略——AMXX 不会因为写不了日志就报错它只是安静地什么都不记等你真出问题去翻日志才发现目录里空的。这个坑我踩过一次之后每次装完都先ls logs/看有没有当天文件。4. 配置核心四件套core.ini、modules.ini、plugins.ini 与三语切换文件放对只是“能加载”要“能用”还得配。AMXX 1.8.1 的配置全在cstrike/addons/amxmodx/configs/下其中modules.ini、plugins.ini、amxx.cfg、users.ini四个最关键core.ini一般只碰日志。4.1 modules.ini按需开模块不要全部打开模块是编译进.so的能力扩展AMXX 加载时会按modules.ini里没被注释的名字去modules/目录找对应文件。写了一个目录里不存在的模块amxx modules里就是bad load。; cstrike/addons/amxmodx/configs/modules.ini ; 分号开头 关闭去掉分号 启用名字不带 .so 后缀 cstrike ; 武器/地图/C4 相关函数CS1.6 服必开 csx ; 老插件常用的 cs_* 函数统计类插件依赖 engine ; 引擎层灯光、音效、实体操作 fakemeta ; 实体属性读写多数现代插件的地基 fun ; 客户端渲染、武器事件 hamsandwich ; 实体钩子僵尸/生存类插件离不开 nvault ; 键值存档金币、排行榜常用 sqlite ; 内置轻量库省掉外部数据库 ;mysql ; 要用外部库再开同时改 sql.cfg ;geoip ; 按 IP 显示归属地缺数据文件就先别开cstrike和csx是 CS1.6 专属这两个来自 cstrike 附加包基础包里没有——这也是为什么“漏装附加包”会导致一堆插件报错却看不出原因。geoip需要data/GeoIP.dat文件不在就老老实实注释掉开了只会多一行加载失败。原则是用到才开每多开一个模块就多一份内存和一次初始化也多个出错点。4.2 plugins.ini插件顺序与注释掉不需要的项plugins.ini里的每一行对应plugins/下一个.amxx执行顺序就是从下往上读的顺序实际按文件内顺序加载所以基础类插件要排在前面。; cstrike/addons/amxmodx/configs/plugins.ini节选1.8.1 默认清单 admin.amxx ; 管理员基础必须有任何权限相关都靠它 admincmd.amxx ; amx_kick / amx_ban / amx_slay 等命令 adminhelp.amxx ; 控制台命令帮助 adminslots.amxx ; 预留通道 multilingual.amxx ; 多语言管理客户端在菜单里自己选语言 menufront.amxx ; 主菜单入口 plmenu.amxx ; 玩家管理菜单 mapchooser.amxx ; 换图 nextmap.amxx ; 下一张图提示 timeleft.amxx ; 剩余时间 statsx.amxx ; 统计显示 miscstats.amxx ; 连杀、首杀之类事件提示 stats_logging.amxx ; 统计数据入库依赖 csx 模块admin.amxx必须放在最前它注册的权限体系是后面所有amx_*命令的前提如果你用数据库存管理员就改成注释admin.amxx、启用admin_sql.amxx两个只能留一个。stats_logging.amxx依赖csx模块modules.ini里没开 csx它就会bad load——这类“插件报错但模块没问题”的连锁关系是新手最容易被绕进去的地方。4.3 三语切换amx_language 与 zh / zhtw / en 的编码问题语言相关的两个 cvar 写在amxx.cfg里; cstrike/addons/amxmodx/configs/amxx.cfg amx_language zh ; 服务端默认语言zh 简体zhtw 繁體en 英文 amx_client_languages 1 ; 允许客户端自己选语言靠 multilingual.amxx amx_show_activity 2 ; 操作提示显示管理员名字 amx_default_access z ; 无权限玩家的默认权限amx_language决定服务端主动推送的文案用哪种语言amx_client_languages 1才会把选择权交给客户端。语言代号必须和data/lang/*.txt里[ ]内的段名完全一致写zh_cn、cn这类代号一律无效而且不报错只是回退到英文——很多人以为没生效其实是代号写错。编码是中文服很常见的一类乱码问题简体段用 GBKANSI繁體段用 Big5用编辑器“另存为 UTF-8”之后进游戏就是一串问号或方块。我的做法是只替换语言包不用编辑器重存需要改个别句子就用支持 GBK/Big5 的编辑器按原编码保存。另外一个常见做法是让语言文件保持打包时的原样改文案改成追加新段不去动已有段的字节。4.4 users.ini 与 core.ini最小必要配置管理员账号写在configs/users.ini格式是四段身份 密码 权限字母 账号标记。; cstrike/addons/amxmodx/configs/users.ini ; 本机管理员按 IP 识别空密码 d(IP) e(不校验密码) loopback abcdefghijklmnopqrstu de ; 远程管理员按 SteamID 识别c 该字段是 SteamID STEAM_0:1:00000000 abcdefghijklmnopqrstu ce权限字母里常用的几个a免疫不会被踢被封、b预留通道、c踢人、d封禁、e处死/掌掴、j发起投票、u菜单访问。全字母串abcdefghijklmnopqrstu就是全权限给服主自己用给普通管理员建议剪掉a和ll是 rcon 相关别一上来就给满。core.ini我只动两块日志路径写错不会报错但排错时最需要它; cstrike/addons/amxmodx/configs/core.ini [logging] logfile addons/amxmodx/logs/amxx.log ; 相对 cstrike 目录别写绝对路径 logdays 7 ; 保留 7 天够回溯一次事故 [amxx_version] version 1.8.1 ; 保持与包内一致不要手改logdays是滚动清理的天数服开得久就设大一点version那一行跟着包走改了以后插件加载时的版本校验容易对不上报出来的错还跟版本号毫无关系属于典型的无效线索。5. 避坑与排查AMXX 1.8.1 加载不起来的五种现象装完第一次启动先别急着进游戏。AMXX 的问题分四层挂载层Metamod 有没有加载 AMXX、模块层、插件层、界面层一层一层往下看比盲目重装快得多。下面这几条都是我在真机上遇到过的按“现象 → 原因 → 解决”记。5.1 挂载层meta list 里根本没有 amxmodx现象服务能启动、能进图控制台敲meta list只显示0 plugins或者直接提示meta不是有效命令。原因liblist.gam的gamedll_linux没改、改成绝对路径、或者 Metamod 的.so没传上去。meta命令本身来自 Metamod这条命令不存在说明 Metamod 完全没加载。解决按顺序回查三处——liblist.gam里的路径是否相对cstrike/、addons/metamod/dlls/metamod_i386.so是否存在且为 755、启动日志里有没有Metamod字样。改完必须整进程重启AMXX 和 Metamod 都不支持热改liblist.gam。5.2 挂载层meta list 有 amxmodx 但状态是 badf现象meta list能看到amxmodx_mm_i386.so但状态列不是RUN而是badf或fail。原因.so与当前服务端架构不匹配拿了 Windows 的 dll 当 so 用或者文件在传输中被截断或者目录缺可执行位。解决先用file cstrike/addons/amxmodx/dlls/amxmodx_mm_i386.so确认是 32 位 ELF 共享库再ls -l看大小是否和包内一致最后确认目录 755。三个都对还起不来就在metamod/plugins.ini那行末尾加debug重启看日志里具体哪一步失败。5.3 插件层一片 bad load 与 Plugin file open error现象amxx plugins里十几个插件显示bad load日志里刷Plugin file open error或Module not found。原因前者是plugins.ini写了插件名但plugins/里没有这个.amxx常见于“别人服上的插件本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑