CSGO服务器插件配置教程SourceModMetaMod插件深度解析

news/2024/5/18 12:07:04 标签: linux, 服务器, 游戏, 游戏程序, 游戏策划

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 "XXXXX": 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.smx

rockthevote.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_autokick  0//挂机不会被踢出

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_enable  1//允许加时赛

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冲冲冲

拥有一台服务器可以做很多有趣的事情


http://www.niftyadmin.cn/n/118308.html

相关文章

【linux训练营】2.Linux常见指令

这里写目录标题Linux基本指令ls 指令pwd命令cd指令touch指令mkdir指令rmdir指令&&rm指令man指令cp指令mv指令三级目录Linux基本指令 ls 指令 语法&#xff1a;ls [选项] [目录或文件] 功能&#xff1a;对于目录&#xff0c;列出该目录下的所有子目录与文件&#xff1…

功能测试如何编写测试用例

测试用例的编写需要按照一定的思路进行&#xff0c;而不是想到哪写到哪&#xff0c;一般测试机制成熟的公司都会有公司自己自定义的测试用例模板&#xff0c;以及一整套的测试流程关注点&#xff0c;当然我们自己在测试生涯中也应当积累一套自己的测试框架&#xff0c;所有功能…

高通平台开发系列讲解(显示篇)Gralloc模块

文章目录 一、什么是Gralloc模块二、Gralloc加载流程三、Gralloc模块的加载四、Gralloc设备的加载五、 fb设备的加载沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍显示过程中Gralloc模块。 一、什么是Gralloc模块 通过加载Gralloc抽象层,可以打开fb设备和…

MySQL日志管理

日志管理在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这种时候&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了数据库中数据丢失或被破坏可能原因&#xff1a;误删除数据库数据库工作时&a…

单目运算符、双目运算符、三目运算符

单目运算符是什么 单目运算符是指运算所需变量为一个的运算符 又叫一元运算符&#xff0c;其中有逻辑非运算符&#xff1a;&#xff01;、按位取 反运算符&#xff1a;~、自增自减运算符&#xff1a;&#xff0c;-等。 逻辑非运算符【&#xff01;】、按位取反运算符【~】、 自…

GUI 之 Tkinter编程

GUI 图形界面&#xff0c;Tkinter 是 Python 内置的 GUI 库&#xff0c;IDLE 就是 Tkinter 设计的。 1. Tkinter 之初体验 import tkinter as tkroot tk.Tk() # 创建一个窗口root.title(窗口标题)# 添加 label 组件 theLabel tk.Label(root, text文本内容) theLabel.p…

Shiro与SpringBoot整合

Shiro与SpringBoot整合一、框架整合1、创建项目添加依赖2、添加配置文件application.yml3、启动类二、登录认证案例1、创建数据库及接口服务2、实现登录认证3、多个 realm 的认证策略设置4、remember me 功能一、框架整合 1、创建项目添加依赖 <dependencies><depend…

DDD系列 - 第1讲 DDD相关概念入门

目录一、引言二、 统一语言Ubiquitous Language三、 三个阶段&#xff08;战略、战术、实现&#xff09;阶段1&#xff1a;战略设计阶段阶段2&#xff1a;战术设计阶段阶段3&#xff1a;技术实现阶段四、限界上下文Bounded Context五、上下文映射Context Map防腐层Anti-Corrupt…