- 好友
- 6
- 在线时间
- 427 小时
- 最后登录
- 2023-6-27
皇家侍卫长[官方战队队长]
暮色骑士团[Dusk] 战团ID:Dusk_GSZXY
- UID
- 1262990
- 第纳尔
- 170
- 精华
- 0
- 互助
- 6
- 荣誉
- 1
- 贡献
- 0
- 魅力
- 14
- 注册时间
- 2013-4-5
鲜花( 189) 鸡蛋( 1)
|
本帖最后由 高手zxy 于 2018-2-14 16:14 编辑
最近有不少人问我怎么开服务器,因此我决定写这个帖子,详细的讲一下如何开服。内容将包括从服务器租用到添加新地图等操作。
可能用到的网址和资源
目录
- 服务器租用及配置建议(以阿里云为例)
- 远程桌面连接和上传服务器端程序
- 开服配置文件设置(附样例)
- 通过服务器端程序修改游戏设置
- 管理员mod功能简介(含高中低级管理员权限设置教程)
- 添加新地图(适用于原版、管理员mod和中文站扩展包)
- 修改左下角服务器消息(适用于本贴中的管理员mod和中文站的扩展包)
- 开设GK服务器或为mod开设服务器的方法
- 疑难解答与勘误
这里列出中文站和网络上的一些已有教程,您在阅读本文的过程中可能需要参考:
|
图片排版似乎有问题,抱歉。请各位点击查看完整图片。
第一部分:服务器租用及配置建议
概述:如果只为原版战团开设一个服务器的话,阿里云提供的1cpu核心1GB内存的服务器已经完全可以满足需求(注意:要为服务器设置虚拟内存,否则内存可能不足。开设两个以上服务器请选择2GB内存)。其承载上限大约是60-70个人。带宽费用需要选择按流量付费。因此,每月的花费会因游戏人数的不同发生非常大的变化。以暮色骑士团的服务器CN_Dusk为例,每月花费约在70-90元。人流量非常大(如GK服)时,每月费用可能高达数百元。下面是详细教程,以阿里云服务器为例讲解租用和设置服务器的过程。
|
第二部分:远程桌面连接
概述:这一部分将使用远程桌面连接上传服务器端程序
在桌面上打开远程桌面连接工具。点击左下角显示选项,输入用户名密码。
计算机:填写你的服务器的IP地址。在阿里云服务器控制台里可以找到公网IP
用户名:填写administrator
密码:就是购买服务器的时候设置的那个密码。
连接成功后,会有一个桌面弹出来,这就是服务器的桌面。远程桌面的剪贴板与本地电脑相同,也就是说你可以直接把开服包那个文件夹复制粘贴进去。
注:设置虚拟内存
如果只购买了1G内存,请设置虚拟内存至少1GB。网上有很多教程,此处不再重复。(本文开头的参考教程中给出了一个。)
|
|
第三部分:开服文件设置
概述:这一部分将讲述如何修改配置文件。首先是修改基础设置,如服务器名称和密码等。然后要添加游戏设置(原来文件里没有),例如游戏速度、友军伤害等。这样就不用开游戏进去改设置。
需要指出:不同的开服文件在不同的游戏模式下不能通用。
服务器文件夹下有一个名为readme.txt的文件,里面有所有的服务器命令。可以在开服文件中添加,也可以在控制台程序(那个黑方框)里边直接输入进行设置。
本文预设各位能看懂英语或者会使用词典。
必须设置的项目其实只有一个:管理员密码。
下面解释一下不太好理解的几项。
set_max_players 64 70
最大游戏人数64人,当64人满但不足70人时,可使用私有密码(private pass)进入服务器
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.不重选装备的刷图,比赛神器
4.红框内是修改服务器消息频率
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源码,麻烦一次,以后都方便。
3.module_strings.py 2397行,定义了玩家看到的联机地图的名字。2442行开始是预留的自定义地图。
但是,这些全部是英语的地图名。为了修改对应的中文名,需修改翻译文件。
注意,原版的翻译文件里当然找不到这个字符串,需要重新生成翻译文件。请参考开头给出的汉化教程进行操作。
4.在开服包中使用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内可找到修改日志和封禁列表存储位置的命令。
|
|
|
评分
-
查看全部评分
鲜花鸡蛋lyplft 在2021-8-11 17:19 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 GreyWarden 在2019-11-10 00:33 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 1348125627 在2019-10-30 11:45 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 1348125627 在2019-10-30 11:45 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 1348125627 在2019-10-30 11:45 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 1348125627 在2019-10-30 11:45 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 1348125627 在2019-10-30 11:44 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 一梦两三年. 在2018-8-12 19:05 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下 一梦两三年. 在2018-8-12 19:05 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下
|