骑砍服务器开服与维护完全教程

摘要:

本文介绍了游戏《骑马与砍杀:战团》的服务器建设方法。此方法同样适用于拿破仑、火与剑和维京征服的服务器开设。本文将从租用服务器、修改配置文件开始讲起,并进一步介绍添加新地图、自定义消息和使用骑砍的module system进行联机内容修改的方法。

目录:

  • 服务器租用及配置建议(以阿里云为例)
  • 远程桌面连接和上传服务器端程序
  • 开服配置文件设置(附样例)
  • 通过服务器端程序修改游戏设置
  • 管理员mod功能简介(含高中低级管理员权限设置教程)
  • 添加新地图(适用于原版、管理员mod和中文站扩展包)
  • 修改左下角服务器消息(适用于文中的管理员mod和中文站的扩展包)
  • 开设GK服务器或为mod开设服务器的方法
  • 杂项问题

点击这里下载服务器端程序(战团1.172版本) | 本站下载链接
这里列出网络上的一些已有教程,您在阅读本文的过程中可能需要参考:

第一部分:服务器租用及配置建议

1.在阿里云注册账号并购买云服务器:(其它云计算平台也可,本文以阿里云为例。)

 云服务器计费方式应当选择按量付费
        如果只为原版战团开设一个服务器的话,阿里云提供的1cpu核心1GB内存的服务器已经完全可以满足需求(注意:要为服务器设置虚拟内存,否则内存可能不足。开设两个以上服务器请选择2GB内存)。其承载上限大约是60-70个人。带宽费用需要选择按流量付费。因此,每月的花费会因游戏人数的不同发生非常大的变化。各骑马与砍杀战队不对外公开的队训服务器一个月将消耗70-80元。人流量非常大(如GK服)时,每月费用可能高达数百元。下面是详细教程,以阿里云服务器为例讲解租用和设置服务器的过程。
选择ECS云服务器并点击立即购买。
计费方式:长期开设请选择包年包月。只开一晚上或一两天可以选择后面两个。
地域和型号:
点击“教我选择”查看各地域服务器所在的城市。
应当选择1核1GB的紧凑型服务器,而不能选择“突发性能实例“。后者cpu性能受限,无法正常游戏。
 选择地域和服务器实例型号
镜像和存储
操作系统请务必选择32位windows系统。Linux系统下开服相当复杂,不懂有关知识的请勿选择。
选择64位系统会导致内存不足。
40G系统盘已经完全够用,不需要单独购买数据盘。购买数据盘的意义在于,当服务器到期释放以后,数据盘可以被单独保留下来并且今后可挂载到其它服务器上,其中的数据不会丢失。如有相关需求,请购买。
选择32位windows操作系统和默认硬盘
安全组选择

第一次购买应当没有安全组供选择。请自行按照提示新建安全组。
注意,服务器购买完成后需要在控制台中配置安全组打开端口,才能搜索到服务器。详见第七步。

创建安全组

公网带宽

公网带宽请务必选择按量付费,因为骑砍服务器每天的访问量是很不均匀的。带宽峰值可以选得大一些。20M的带宽可以承载约80人同时在线,此时服务器的cpu也已达极限,开始出现卡顿。

选择按量付费公网带宽和带宽峰值

系统配置

这一部分比较重要的是设置服务器密码。这个密码就是稍后远程桌面登陆所需要的密码,请牢记。

设置密码

其余没有提到的设置请根据提示设置填写,可以跳过的均可直接跳过。

2.配置安全组规则以放行骑马与砍杀服务器

安全组1

安全组3

配置安全组端口

点击前图右上角添加安全组规则,可以看到如上图所示设置。这里的设置比较简单粗暴,即开放所有端口。
出方向默认开放,无需设置
如需只开放个别端口,请自行研究。网页上有很多提示,阿里云也有帮助文档。

至此,开设服务器的准备工作已完成。接下来使用远程桌面上传开服程序包。


第二部分:远程桌面连接

远程桌面连接

在桌面上打开远程桌面连接工具。点击左下角显示选项,输入用户名密码。
计算机:填写你的服务器的IP地址。在阿里云服务器控制台里可以找到公网IP
用户名:填写administrator
密码:就是购买服务器的时候设置的那个密码。
连接成功后,会有一个桌面弹出来,这就是服务器的桌面。远程桌面的剪贴板与本地电脑相通,也就是说你可以直接把开服包那个文件夹复制粘贴进去。

注:设置虚拟内存
如果只购买了1G内存,请设置虚拟内存至少1GB。网上有很多教程,此处不再重复。


第三部分:开服文件设置

        概述:这一部分将讲述如何修改配置文件。首先是修改基础设置,如服务器名称和密码等。然后要添加游戏设置(原来文件里没有),例如游戏速度、友军伤害等。这样就不用开游戏进去改设置。
需要指出:不同的开服文件在不同的游戏模式下不能通用。
        服务器文件夹下有一个名为readme.txt的文件,里面有所有的服务器命令。可以在开服文件中添加,也可以在控制台程序(那个黑方框)里边直接输入进行设置。
本文预设各位能看懂英语或者会使用词典。

必须设置的项目其实只有一个:管理员密码。
下面解释一下不太好理解的几项。
set_max_players 64 70
最大游戏人数64人,当64人满但不足70人时,可使用私有密码(private pass)进入服务器
set_mission multiplayer_bt
设置游戏模式为战场模式,下次自动换图改变模式(持续有效,即使在游戏内改模式,下次换图还会改回来)
set_map
将服务器地图设置为该地图。下次自动换图换为该地图。(一次有效)
add_map
将地图添加到随机地图列表。未使用add_map添加的新图在自动换图时不会出现。
add_factions A B
将阵营添加到随机列表。
可以由此防止随机到库吉特等阵营,删除对应行即可。编号与阵营的关系如下
1 斯瓦迪亚   2 维吉亚   3 库吉特   4 诺德   5 罗多克   6 萨兰德

set_randomize_factions 1
设置可随机阵营,即使上面所有的add_factions 生效。一般不予修改。
set_upload_limit
服务器上传限制,可以加两个零什么的,不高于服务器最大带宽。该选项一般没有影响。

默认设置:将下面内容复制粘贴到你的配置文件里,开服时自动设置战斗速度、友伤等。
allow_renaming_server 1
set_auto_team_balance_limit 2  #自动平衡
set_control_block_direction 1 #手动格挡
set_combat_speed 4
set_force_default_armor 1 #禁止裸体
set_friendly_fire 1 #友伤
set_melee_friendly_fire 1
set_friendly_fire_damage_friend_ratio 100
set_friendly_fire_damage_self_ratio 0
set_kick_voteable 1 #允许投票踢出玩家
set_map_time_limit 60
set_round_gold_bonus 100 #回合奖金
set_round_max_seconds 360
set_combat_gold_bonus 150  #战斗奖金,战场服建议改低
set_starting_gold 160 #起始金钱(现在是1600)
set_team_point_limit 15
set_valid_vote_ratio 51
set_ban_voteable 0 #禁止投票封禁玩家

双击对应.bat文件开服。如不能正常工作,请右键编辑.bat文件:
mb_warband_dedicated.exe -r Sample_Battle.txt -m Native
战场服的.bat文件,意义应该比较明显。

 

第四部分:通过服务器端程序修改游戏设置

通过服务器端程序修改游戏设置的方法很简单,把命令输到控制台程序(黑方框)里就行了。

下面主要举例说明如何修改游戏模式。(在游戏里用管理员权限改模式下次自动换图就改回去了)
 服务器控制台程序
1.修改游戏模式:
set_mission multiplayer_dm 是改为混战模式。其它模式到各模式的开服文件里找一下set_mission即可
 
下次换图时将变更模式。输入start命令,服务器立即刷图并更改模式。
2.查看玩家人数:
输入stats命令。
3.进行其它修改:
输入相应命令即可。

第五部分:管理员mod功能简介

以原版管理员mod adimi tools 1.172为例。也适用于骑马与砍杀中文站的扩展包。
本段还介绍了如何使用管理员mod为不同的管理员设置权限。

中文站的扩展包是已经有汉化的了,所以此处不再赘述各项含义,简单提一下其功能
(截图是原版英语的管理员工具)
1.设置每个玩家的装备/回血/不死(死后自动原地复活)/发钱/传送等等。
2.强制更改玩家队伍,含旁观者
3.不重选装备的刷图,比赛神器

adimi tools

4.上图红框内是修改服务器消息频率

adimi tools 2

5.上面红框是战场最后两分钟是否产生旗子。默认没有,请注意。
6.下面红框可以设置步、骑、远程的人数限制。
如何设置不同等级的管理员权限

重要提示:通过管理密码进入服务器的都是高级管理员权限。设置了低、中级管理员权限以后,对应管理员直接进入服务器后自动获得对应的低等级管理员权限。
      原版的管理员mod提供了设置不同等级管理员的权限的功能,但是无法通过游戏内设置更改,必须更改.py源码或者是.txt文件。中文站置顶的扩展包也含有这一功能,可通过修改txt设置权限,但是由于没有源码难以自定义权限。
      使用module system修改管理员权限的方法是:module_scripts.py 54427行开始,有用占位符代替的UID,例如:
(this_or_next|eq,":player_uid",777777777777),
      将要修改的管理员的权限替换777……,然后编译并替换开服包内文件即可。如果修改scripts.txt文件,则用搜索找到那一串7并予以替换。提示:7.8.9代替的UID分别是低、中、高级权限管理员。
      注意,默认条件下,高级管理员才能使用管理员mod高级功能,例如加钱、回血等,中高级管理员才能使用管理员面板修改地图等。下面举例说明如何修改权限:
module_scripts.py 第10164行规定了哪些管理员可以打开管理面板。有如下代码:
(this_or_next|player_slot_eq,":player_no",adimi_tool_admin_level_mid,1),
(this_or_next|player_slot_eq,":player_no",adimi_tool_admin_level_high,1),

为使低级管理员可以打开面板,需添加:
(this_or_next|player_slot_eq,":player_no",adimi_tool_admin_level_low,1),

      以上是在服务器端添加了权限。还需要修改客户端,使用户可以在菜单项中找到管理员面板。
module_presentation.py 7732行,有如下代码 (neg|player_slot_eq,":my_player_no",adimi_tool_admin_level_low,1),
      neg的意思就是不等于,不是低级管理员才能执行下面代码产生管理员面板那个按钮。将这一行用#注释掉即可。
      这只是一个例子,因为经过上述修改之后低级管理员仍然只能查看面板,无法做出任何修改。为赋予这些权限,需要针对每一项权限改代码,非常麻烦。但是,可以就ban人、踢人等个别权限进行类似的设置,还是比较方便的。
例子2:取消低级管理员的ban人权限:

首先在scripts中修改服务器端程序,不再赘述。
然后module_presentation.py 7738行处有代码:
(create_button_overlay, "$g_presentation_obj_escape_menu_9", "str_ban_player", 0),
(overlay_set_color, "$g_presentation_obj_escape_menu_9", 0xFFFFFF),

修改为
(try_begin),
(neg|player_slot_eq,":my_player_no",adimi_tool_admin_level_low,1),
(create_button_overlay, "$g_presentation_obj_escape_menu_9", "str_ban_player", 0),
(overlay_set_color, "$g_presentation_obj_escape_menu_9", 0xFFFFFF),
(try_end),

即添加了一个条件判断,不允许低级管理员的客户端上显示这个按钮。

需要注意的是,修改客户端程序之后要把你修改之后编译的文件发给玩家,让他们覆盖自己文件夹里的文件才能生效。如果是取消权限后没覆盖本地文件,那么对应管理员将可以按下对应按钮而不会有任何反应。
总结:修改管理员权限要同时修改管理员自己的面板和服务器端判断程序。善用搜索功能搜索adimi_tool_admin_level可以发现更多可供编辑的权限。

 


第六部分:添加新地图

已经补充了修改.txt文件为管理员mod添加地图的方法

请参考开头给出的moudle system编译方法。
不论是否有管理员mod,均可使用本方法添加新地图。
为了增加新地图,需要修改3个.py文件
1.module_scripts.py 13341行起是地图列表。
[当你使用管理员mod时,本步骤不是必须的,因为管理员mod用代码完成了添加地图的工作。]
这里按模式给出了各个模式的可用地图列表。按照规律添加自己在后面加入的新地图即可即可。注意修改末尾的地图总数。
(eq, ":game_type", multiplayer_game_type_destroy), #游戏模式
(assign, ":num_maps", 23), #地图总数,记得修改

2.module_scenes.py 1164行联机地图 ,1246行是预留的空白地图
【该步骤定义地图文件及地形代码,必不可少】
从第1246行起可以看到大量空地图,是管理员mod预留的,添加地图请修改。
在\\文档\Mount&Blade Warband\SceneObj下可以找到平时玩的时候下载的地图。以此举例添加新图的方法。每个新图包括两个文件,例如:
scn_CN_arena.sco   scn_CN_arena.txt
.sco应该放到开服包里,位置是:\\Mount&Blade Warband Dedicated\Modules\Native\SceneObj
打开.txt文件,根据其内容修改.py文件中的代码,例如:
  ("multi_scene_enl_snowyhamlet",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000001400389800003a4ea000058340000637a0000399b",
[],[],"outer_terrain_snow"),

[无管理员mod请新增一行,并不要忘记添加到相应游戏模式]
1. 源码中的第一个参数,是去掉了scn_前缀的地图名(txt文件中的第一段)
2.源码中的第二个参数是地图生成标志,sf_generate必填。sf_randomize意为随机地图sf_auto_entry_points意为自动入口点(出生点、旗子等)。非随机地图不填后两者。中间以 | 分隔。
3.后面几个参数(与地形的生成有关)请对比.txt文件中的数字进行填写。


3.管理员mod常数修改[非管理员mod不存在这一操作]
moudule_constants.py 2041行:
adimi_tool_custom_scene_begin = "multi_custom_adimi_tool_scene_1"
其含义是指定了第一个自定义地图的名字,用于在代码中实现自动添加地图到对应模式。当你按上面方法添加了自定义地图之后,应当已经覆盖了

multi_custom_adimi_tool_scene_1这张地图名。把这里的双引号之内的地图名改为你自己的那张地图,例如:

adimi_tool_custom_scene_begin = "scn_Maze_arena2"

提示:如果你修改.txt文件,那么你必须在管理员mod的基础上进行修改,且只能完成第二个步骤。需要用搜索找到scenes.txt里的预留的自定义地图定义,然后依找规律去改。于此处修改了代码中的地图名不同,你只能选择修改地图文件名。将你下载的地图的文件名改为对应的预留地图名。例如,通过txt修改了第一个地图的地形码,那么将地图文件名改为:

scn_multi_custom_adimi_tool_scene_1.sco
这种方法较为简单,但当地图数量较多时,显然不利于服务器的围护。因此推荐修改.py源码,麻烦一次,以后都方便。

4.module_strings.py 2397行,定义了玩家看到的联机地图的名字。2442行开始是预留的自定义地图。
但是,这些全部是英语的地图名。为了修改对应的中文名,需修改翻译文件。
注意,原版的翻译文件里当然找不到这个字符串,需要重新生成翻译文件。请参考开头给出的汉化教程进行操作。

5.在开服包中使用add_map将新图添加到随机地图列表。
add_map后面跟的地图名应去掉scn_前缀,也是module_scenes.py里填写的那个地图名。

第七部分:修改左下角服务器消息

(适用于本贴中的管理员mod和中文站的扩展包)

基本思路:修改英语消息请直接改代码,修改其他语言(比如中文)请改翻译文件。

1.如果你使用的是原版管理员mod,那么你需要按照开头给出的汉化mod方法创建管理员mod的汉语翻译文件。否则下面不会搜索到那个字符串。如果你使用的是中文站扩展包,则跳过这一步骤。

2.使用中文站扩展包的,在开服包的\\Modules\Native\languages下新建一个名为en的文件夹,把简体中文[cns]里的文件复制到en下。使用原版管理mod的,将你创建的翻译文件复制到这里。
(服务器端程序只读取英语,相当于欺骗服务器有一个英语翻译,但是是中文)
3.使用记事本打开game_strings.csv 用搜索找到str_custom_server_message_1
4.在竖线后面添加要在左下角显示的中文消息。每个中文字符后面都要有一个空格,包括中文标点。
举例:

修改服务器端消息

第八部分:开设GK服务器或为mod开设服务器的方法

其实开GK服不难,开服包里的native文件夹覆盖相应文件即可。
开mod的服务器,把mod文件放到modules文件夹还要修改.bat文件。 里边的-m Native 要修改为相应的mod
另外,修改了模式的mod要相应修改set_mission。这个mission可以理解为场景类型,单机的城镇、战场等和联机的各模式都对应一个mission.

第九部分:杂项问题

1.ban人与解ban
    投票ban人是临时的(一个小时左右),除非重启服务器无法解除。
    当管理员在服务器内第一次ban人之后,logs文件夹(默认位置,可修改)将产生ban_list.txt文件。删除对应条目以解除封禁。也可手动添加UID进行封禁。在readme.txt内可找到修改日志和封禁列表存储位置的命令。

发表评论

电子邮件地址不会被公开。 必填项已用*标注