admin 发表于 2023-10-11 17:02:50

CSGO服务器插件配置教程SourceMod&MetaMod插件深度解析

CSGO服务器插件配置教程SourceMod&MetaMod插件深度解析

这里是艾西服务器论坛,在上一篇中我详细的说了csgo社区/私人服务器的搭建过程以及需要注意的一些事项,那么很多小伙伴对于插件可能还是会有些疑惑,主流的现在就是SourceMod&MetaMod插件,今天艾西服务器论坛给大家分享如何将插件完整部署到服务器中以及插件文件的深度解析!!!

SourceMod&MetaMod





在CS1.6版本,CS服务器插件均为.dll格式(动态链接库),需要使用CS提供的sdk生成.dll,同时将.vdf放入addons中引导.dll生效实现插件的自定义功能。由于该部分需要对sdk及C语言的深入了解,门槛过高。
之后Allied团队将sdk改写后,提供了接口供C++语言对插件的编写,这个有接口的sdk平台就是MetaMod(准确的来说应该是MetaMod:Source)。之后为了适配pawn语言又用同样的方法构建了SourceMod平台。(在这里深深的对Allied团队鞠躬)可以说SourceMod和MetaMod是CS这个系列插件的重要支撑与基石,在部署了SourceMod&MetaMod之后,我们便可以装载插件,实现自定义功能了。
SourceMod GW:sourcemod.net
MetaMod GW:metamodsource.net

部署
利用PuTTY以csgoserver身份连接服务器
进入csgo目录下
cd /home/csgoserver/serverfiles/csgo
我们需要将SourceMod与MetaMod下载并解压,在资源里找到Linux开始加载
Wget xxxxx://sm.alliedmods.net/smdrop/1.10/sourcemod-1.10.0-git6528-linux.tar.gz
wget xxxxx://mms.alliedmods.net/mmsdrop/1.11/mmsource-1.11.0-git1145-linux.tar.gz
下载之后解压缩
tar -xzvf sourcemod-1.10.0-git6528-linux.tar.gz
tar -xzvf mmsource-1.11.0-git1145-linux.tar.gz
删除安装包
rm sourcemod-1.10.0-git6528-linux.tar.gz
rm mmsource-1.11.0-git1145-linux.tar.gz
接下来配置服务器参数,配置文件为csgoserver.cfg
位于 /home/csgoserver/serverfiles/csgo/cfg目录下。
注意:该文件与/lgsm下的csgoserver.cfg作用不同

配置csgoserver.cfg
如果在该目录下不存在csgoserver.cfg文件,请新建一个。如果存在一个名称为server.cfg的文件或存在csgoserver.cfg,将其重命名后按照下面的样例进行修改。
仅供参考:

//csgoserver.cfg
// .................................. Basic ................................. //
// Hostname - Name of the server.
hostname ""
//hostname为服务器在公网上的名称(例:IP:xxx.xxx.xxx.xxx)
// RCON - remote console password.
rcon_password ""
//RCON,也称RC,是在csgo客户端内远程控制服务器控制台的工具,此处为该工具的密码
// Server password - for private servers.
sv_password ""
//此处为服务器密码,设置admin文件后管理员权限可不输入密码进入
// Email - Server admin email.
// Example: sv_contact "email@example.com"
sv_contact ""
//此处不用管直接过
// LAN mode - Server is a LAN server; can't connect from the internet. VAC (Valve Anti-Cheat) is disabled in this mode.
// Default: sv_lan 0
sv_lan 0
//同上
// Cheats mode - Server is disabled to use cheats by default;Commands like noclip,god are disabled to be exploited by the players. VAC (Valve Anti-Cheat) is disabled in this mode when value is set to '1'.
// Default: sv_cheats 0
// Cheats ON: sv_cheats 1
sv_cheats 0
//服务器作弊参数 一般不是娱乐服务器请不要改动
// Tags - Used to provide extra information to clients when they're browsing for servers. Separate tags with a comma.
// Example: sv_tags "128-tick,deathmatch,dm,ffa,pistol,dust2"
sv_tags ""
//服务器标签,可以参考如下设置
//sv_tags "128tick,competitive,5v5"
// Region - The region of the world to report this server in.
// Default: -1
// 0 - US East, 1 - US West, 2 - South America, 3 - Europe, 4 - Asia, 5 - Australia, 6 - Middle East, 7 - Africa
sv_region 4//服务器所在地区,一般填4标记为亚洲,也可缺省为-1
sv_prime_accounts_only 1
//此处参数为仅限优先账户进入,可对服务器玩家的种类进行限制
//以下内容默认不变
// ............................. Server Logging ............................. //
// Enable log - Enables logging to file, console, and udp < on | off >.
// Recommended: log on
log on
// Log bans - Log server bans in the server logs.// Default: sv_logbans 1
// Recommended: sv_logbans 1
sv_logbans 1
// Log echo - Display log information to the server console.// Default: sv_logecho 1
// Recommended: sv_logecho 1
sv_logecho 1
// Log file - Log server information in the log file.
// Default: sv_logfile 1
// Recommended: sv_logfile 1
sv_logfile 1
// One file log - Log server information to only one file.
// Default: sv_log_onefile 0
// Recommended: sv_log_onefile 0
sv_log_onefile 0
// Server Hibernation
sv_hibernate_when_empty 1
sv_hibernate_ms 5
// ............................. Server Query ............................. //
// More info at:
xxx.gametracker.com/games/csgo/forum.php?thread=91691
host_name_store 1
host_info_show 1
host_players_show 2
// ................................ Ban List ................................ //
// User ban - Server banlist based on user steam ID.// Recommended: exec banned_user.cfg
exec banned_user.cfg
// IP ban - Server banlist based on user IP.
// Recommended: exec banned_ip.cfg
exec banned_ip.cfg
// Write ID - Writes a list of permanently-banned user IDs to banned_user.cfg.
writeid
// Write IP - Save the ban list to banned_ip.cfg.
writeip
如上设置完成后,重启服务器并从CSGO客户端进入,输入!admin后出现如下图提示,证明此时SourceMod&MetaMod已成功加载。




配置admins_simple.ini到这里服务器插件框架已经正确加载,我们要给自己增加一个游戏内的admin权限。SourceMod管理员配置文件一般为admin.cfg,为了简化操作我们可以通过修改更为简单的admins_simple.ini文件实现,该文件的目录如下:/home/csgoserver/serverfiles/csgo/addons/sourcemod/configs进入目录并打开文件// admins_simple.ini// READ THIS CAREFULLY! SEE BOTTOM FOR EXAMPLES//// For each admin, you need three settings://"identity"                "permissions"                "password"//// For the Identity, you can use a SteamID or Name.To use an IP address, prepend a ! character.// For the Permissions, you can use a flag string and an optional password.//// PERMISSIONS://Flag definitions are in "admin_levels.cfg"//You can combine flags into a string like this://"abcdefgh"////If you want to specify a group instead of a flag, use an @ symbol.Example://"@Full Admins"////        You can also specify immunity values.Two examples://        "83:abcdefgh"                        //Immunity is 83, flags are abcdefgh//        "6:@Full Admins"                //Immunity is 6, group is "Full Admins"////        Immunity values can be any number.An admin cannot target an admin with//        a higher access value (see sm_immunity_mode to tweak the rules).Default//immunity value is 0 (no immunity).//// PASSWORDS:// Passwords are generally not needed unless you have name-based authentication.//In this case, admins must type this in their console:////   setinfo "KEY" "PASSWORD"////Where KEY is the "PassInfoVar" setting in your core.cfg file, and "PASSWORD"//is their password.With name based authentication, this must be done before//changing names or connecting.Otherwise, SourceMod will automatically detect//the password being set.//////////////////////////////////// Examples: (do not put // in front of real lines, as // means 'comment')////   "STEAM_0:1:16"                "bce"//generic, kick, unban for this steam ID, no immunity//   "!127.0.0.1"                "99:z"//all permissions for this ip, immunity value is 99//   "BAILOPAN"                "abc"        "Gab3n"//name BAILOPAN, password "Gab3n": gets reservation, generic, kick////////////////////////////////上面的文件主要介绍了如何添加管理员,可以根据steam16位ID、ip地址、steam组来设置对应的权限。介绍下根据steamID设置的方法:如何获取steam 16位ID?方法 一:游戏服务器内获取进入任意GF服务器,按“~”键打开控制台,输入status显示服务器内玩家列表找到自己对应的steamID,格式一般为"STEAM_0:1:1234567",与文件中的"STEAM_0:1:16"相符。方法二:输入steam主页地址(登录steam后进入个人资料 ,右键选择复制网页url即可),即可查询到steam16位ID
在获取了SteamID后,按照如下格式在文件中新增一行"STEAM_0:1:1234567"(此处为SteamID) “99:z”(最高管理权限,豁免计数99)之后重启服务器,从CSGO客户端登录后输入:admin



这样就有了最高权限


插件&CFG
文件结构
在介绍插件如何安装之前,先了解下/csgo目录下的文件结构



/home/csgoserver/serverfiles/csgo
/addons文件夹存储着SourceMod&MetaMod框架及插件
/cfg文件夹存放着steamcmd提供的默认的服务器配置文件
/maps存放着游戏地图,后期添加创意工坊地图时可以在其中放置
/csgo目录下mapcycle.txt与maplist.txt文件决定着装载插件后服务器是否投票换图及换图的列表。




/home/csgoserver/serverfiles/csgo/addons/sourcemod
/addon/sourcemod目录下包含着/plugins插件文件夹,/scripting插件源文件夹,/configs文件夹。这里注意,此处的configs是插件自定义的配置文件,不是steamcmd默认的配置文件目录。




home/csgoserver/serverfiles/csgo/addons/sourcemod/plugins
/plugins目录下存放着插件文件,格式名为.smx,移除.smx文件会对服务器中的插件



/home/csgoserver/serverfiles/csgo/addons/sourcemod/scripting
/scripting目录下存放着未编译的脚本文件,格式名为.sp,删除.sp文件不会影响到服务器运行。这里和上文的.smx一样先按下不表,待会会详细的跟大家解说一下



/home/csgoserver/serverfiles/csgo/addons/sourcemod/configs

/configs目录下存放着插件自定义的配置文件,之前介绍的admin_simple.ini也位于此。


/home/csgoserver/serverfiles/csgo/cfg
/home/csgoserver/serverfiles/csgo/cfg目录下存放着csgo服务器默认的cfg配置。
上面添加的csgoserver.cfg位于此。我们平时常玩的休闲模式、竞技模式、搭档模式就对应着这里的gamemode_casual.cfg,gamemode_competitive.cfg,gamemode_competitive.cfg。

.sp&.smx文件
我们已经知道脚本目录下存放着.sp,插件目录下存放着.smx。我们打开一组对应的文件rockthevote.sp、rockthevote.smx



rockthevote.sp




rockthevote.sp
rockthevote.sp文件是由C++语言编写的脚本文件
我们接着看rockthevote.smx



rockthevote.smxrockthevote.smx
rockthevote.smx是由.sp文件编译得到的二进制插件文件,可供服务器正常调用。
实现.sp编译为.smx的是名为compile.sh的桥梁。在Windows操作系统下,通过将.sp文件拖至compile.sh即可获得对应的.smx文件
而在CentOS下通过执行
./compile rockthevote.sp
即可执行该搞作,获得rockthevote.smx
获得.smx文件后,将其拷贝至/plugin文件夹下,重启服务器即可在启动服务器时自动生效。
以下是compiled.sh的具体内容:




compiled.sh

SourceMod Plugin
除了SourceMod自带的插件之外,我们可能需要诸如满十、1v1、僵尸逃跑、kz等一些需求,这时自带的插件无法满足这些内容,就需要我们去网上找对应的插件进行下载。国内有僵尸乐园ZED和X社区两个大社区,安装器中也包含了很多有用的插件,但这里简单的介绍一下如何从SourceMod下载


SourceMod插件搜索


搜索“KZ”插件




按照插件的说明,即可进行部署与安装,安装后在重启服务器,插件即可生效

WarMod(满十插件)
SourceMod框架自带一个WarMod的配置文件(.cfg),在客户端使用!admin即可开启



选2进入服务器指令




按2执行cfg



选2启用WarMode




成功执行配置

CFG
介绍一下服务器自带的部分配置文件,这里以gamemode_competitive.cfg为例,选取几项比较重要的参数进行讲解,目录为
/home/csgoserver/serverfiles/csgo/cfg
gamemode_competitive.cfg
bot_autodifficulty_threshold_high                                        0.0      // Value between -20.0 and 20.0 (Amount above avg human contribution score, above which a bot should lower its difficulty)
bot_autodifficulty_threshold_low                                        -2.0      // Value between -20.0 and 20.0 (Amount below avg human contribution score, below which a bot should raise its difficulty)//bot难度参数
bot_chatter                                                                                        normal
bot_defer_to_human_goals                                                      1
bot_defer_to_human_items                                                      1
bot_difficulty                                                                              2
bot_quota                                                                                        1//是否允许bot加入
bot_quota_mode                                                                              competitive
cash_player_bomb_defused                                                      300
cash_player_bomb_planted                                                      300
cash_player_damage_hostage                                                      -30
cash_player_interact_with_hostage                                        300
cash_player_killed_enemy_default                                        300
cash_player_killed_enemy_factor                                                1
cash_player_killed_hostage                                                      -1000
cash_player_killed_teammate                                                      -300
cash_player_rescued_hostage                                                      1000
cash_team_elimination_bomb_map                                                3250
cash_team_elimination_hostage_map_t                                        3000
cash_team_elimination_hostage_map_ct                                        3000
cash_team_hostage_alive                                                                0
cash_team_hostage_interaction                                                600
cash_team_loser_bonus                                                                1400
cash_team_bonus_shorthanded                                                      1000
mp_starting_losses                                                                        1
cash_team_loser_bonus_consecutive_rounds                        500
cash_team_planted_bomb_but_defused                                        800
cash_team_rescued_hostage                                                600
cash_team_terrorist_win_bomb                                                3500
cash_team_win_by_defusing_bomb                                                3500
cash_team_win_by_hostage_rescue                                                2900
cash_team_win_by_time_running_out_hostage                        3250
cash_team_win_by_time_running_out_bomb                              3250//回合钱数相关设置
ff_damage_reduction_bullets                                                      0.33
ff_damage_reduction_grenade                                                      0.85
ff_damage_reduction_grenade_self                                        1
ff_damage_reduction_other                                                      0.4
mp_afterroundmoney                                                                        0
mp_buytime                                                                                        20//购买时间
mp_buy_anywhere                                                                              0
mp_buy_during_immunity                                                                0
mp_death_drop_defuser                                                                1
mp_death_drop_grenade                                                                2// 0=none, 1=best, 2=current or best
mp_death_drop_gun                                                                        1// 0=none, 1=best, 2=current or best//武器、装备掉落相关
mp_defuser_allocation                                                                0
mp_force_pick_time                                                                        15
mp_forcecamera                                                                              1// Set to 1 for team only spectating.
mp_free_armor                                                                              0
mp_freezetime                                                                              15//回合开始时间
mp_friendlyfire                                                                              1
mp_win_panel_display_time                                                      3
mp_ggprogressive_round_restart_delay                              15
mp_ggtr_bomb_defuse_bonus                                                      1
mp_ggtr_bomb_detonation_bonus                                                1
mp_ggtr_bomb_pts_for_flash                                                      4
mp_ggtr_bomb_pts_for_he                                                                3
mp_ggtr_bomb_pts_for_molotov                                                5
mp_ggtr_bomb_pts_for_upgrade                                                2
mp_ggtr_bomb_respawn_delay                                                      0
mp_ggtr_end_round_kill_bonus                                                1
mp_ggtr_halftime_delay                                                                0.0
mp_ggtr_last_weapon_kill_ends_half                                        0
mp_respawn_immunitytime                                                      -1// disabling immunity in warmup too for 1v1 fights//出生位置是否随机
mp_halftime                                                                                        1//是否中场换边
mp_match_can_clinch                                                                        1// 0 完赛, 1 大于半场提前判胜
mp_maxmoney                                                                                        16000
mp_maxrounds                                                                              30
mp_molotovusedelay                                                                        0
mp_playercashawards                                                                        1
mp_roundtime                                                                              1.92
mp_roundtime_hostage                                                                1.92
mp_roundtime_defuse                                                                        1.92//回合时间
mp_solid_teammates                                                                        1
mp_startmoney                                                                              800
mp_teamcashawards                                                                        1
mp_timelimit                                                                              0
mp_technical_timeout_per_team                                                1
mp_technical_timeout_duration_s                                                120
mp_warmuptime                                                                              300//热身时间
mp_warmuptime_all_players_connected                                        60//最后一人连入后热身倒计时
mp_weapons_allow_zeus                                                                5
spec_freeze_panel_extended_time                                                0
spec_freeze_time                                                                        2.0
sv_allow_votes                                                                              1//是否允许投票
sv_talk_enemy_living                                                                0
sv_talk_enemy_dead                                                                        0//语音相关
sv_auto_full_alltalk_during_warmup_half_end                        0
sv_arms_race_vote_to_restart_disallowed_after                0
sv_deadtalk                                                                                        1//死后能否语音通话
sv_ignoregrenaderadio                                                                0
tv_delay                                                                                        105//转播延迟 直播相关
mp_warmup_pausetimer                                                                0//热身时间暂停器,指热身不显示时间
mp_halftime_pausetimer                                                                0
mp_randomspawn                                                                              0
mp_randomspawn_los                                                                        0
sv_infinite_ammo                                                                        0//无限子弹
ammo_grenade_limit_flashbang                                                2
ammo_grenade_limit_total                                                      4
mp_weapons_allow_map_placed                                                      1
mp_weapons_glow_on_ground                                                      0
mp_display_kill_assists                                                                1//展示助攻信息
mp_respawn_on_death_t                                                                0
mp_respawn_on_death_ct                                                                0
mp_ct_default_melee                                                                        weapon_knife
mp_ct_default_secondary                                                                weapon_hkp2000
mp_ct_default_primary                                                                ""
mp_t_default_melee                                                                        weapon_knife
mp_t_default_secondary                                                                weapon_glock
mp_t_default_primary                                                                ""
mp_default_team_winner_no_objective                                        -1// 2 == CTs, 3 == Ts
sv_occlude_players                                                                1
occlusion_test_async                                                                0
spec_replay_enable                                                                0//是否允许旁观
补充几个我用到的命令
mp_spectators_max      5//最大观战人数
sv_airaccelerate      800//加速度
mp_autokick0//挂机不会被踢出
mp_round_restart_delay    2//回合开始时的静止时间
tv_enable                         1//开启demo录制权限
tv_relayvoice               1//demo录制玩家声音
tv_autorecord               1//自动录制demo,保存在/csgo目录下
tv_title                         "xxx"//demo中的名称,此处录制出来名称即为xxx
mp_overtime_enable1//允许加时赛
mp_drop_knife_enable   1//允许丢刀
mp_friendlyfire                0//关闭队友伤害

演示:部署gunmenu插件
下面以一个具体的案例说明插件的部署。演示部署gunmenu插件(换枪插件)的流程。
①首先在SourceMod搜索"gun",找到我们所需的插件(红框内)



进入页面后选择“Get Plugin”(下方的绿框)进行下载,一般作者会介绍该插件如何使用,此处作者介绍在上方的绿框中:


Installation: Place compiled plugin (sm_gunmenu.smx) into the plugins folder (../addons/sourcemod/plugins/). Place the configuration file (gunmenu.ini) into the config folder (../addons/sourcemod/configs/).
Changes to gunmenu.ini are read at map/plugin load time.
意思是需要将sm_gunmenu.smx放置到 ../addons/sourcemod/plugins/目录下,gunmenu.ini放置到 ../addons/sourcemod/configs/目录下
橙色框中提示插件如何在客户端中使用,此处说明在控制台输入sm_guns或sm_gunmenu即可调取枪械菜单。由于SourceMod下sm_指令可用聊天框中!替代,所以聊天框中!guns与控制台sm_guns效力相同。
②下载后将sm_gunmenu.smx放置于服务器的目录下
/home/csgoserver/serverfiles/csgo/addons/sourcemod/plugins



将gunmenu.ini放置于服务器的目录下
/home/csgoserver/serverfiles/csgo/addons/sourcemod/configs



③重启服务器,登录CSGO客户端,按照Alliedmods上的提示使用插件。



可以看到已经成功启用了gunmenu插件,调出了枪械菜单。
④如需修改服务器插件的内容,可以在/addons/sourcemod/configs目录下打开gunmenu.ini文件进行修改。
以上是一个一般情况下的插件部署过程,部分插件可能还需要配置数据库、cfg文件、ip端口等,需要详细按照Alliedmods上的提示部署。

创意工坊地图
一般将创意工坊地图放置在
/home/csgoserver/serverfiles/csgo/maps/workshop
目录下,即maps下的workshop目录(如果没有该目录就创建一个),如果服务器默认地图为创意工坊地图,需要将前篇中的启动参数map部分修改 比如:
//csgoserver.cfg//sample +map de_dust2....+map 389368280   ....
即可,同时需要填写steamwebapi,以供地图下载

地图组循环
修改2.1节中/csgo目录下的mapcycle.txt与maplist.txt文件,注意:两个文件中的内容要相同。如要添加创意工坊地图,直接在txt文档中添加数字即可。

关于皮肤插件
注意:CS:GO - GSLT 封禁(尽量不去弄)




这里是艾西服务器论坛对于CSGO社区服务器会用到的插件以及教程今天就分享到这里啦希望对有兴趣的小伙伴有帮助,祝愿更多CSGO的大神们一起RUSHB冲冲冲

艾西服务器论坛:为您在往后的网络道路上提供更多有用的知识


页: [1]
查看完整版本: CSGO服务器插件配置教程SourceMod&MetaMod插件深度解析