Previous topicNext topic
 Gameofmir Help
Help > 游戏引擎功能系统 > 游戏功能详解 >
角色跨服 跨区跨服功能

角色跨服 跨区跨服功能

功能说明:多个相同版本的区服之间,可以把角色从专区(子服/分区)临时或带数据传送到中央服务器(母区/主区)进行游戏,再按参数选择是否把数据传回原服务器。

注意:参与跨服的所有区必须使用相同版本、相同脚本结构、相同地图和物品数据。版本不一致会造成角色数据、装备、变量或地图显示错误。

一、跨服通讯配置

配置入口一:使用“GameOfMir引擎控制器”配置向导,配置到第八步,勾选“跨服通讯设置”。

配置入口二:M2 引擎菜单 “查看(&V)” - “扩展功能(&E)” - “跨服参数设置”。

必须设置一个主区,也只能设置一个主区。其它区全部设置为分区,分区引擎会连接主区。

如果主区和分区在同一台服务器,分区的主区IP填写 127.0.0.1;如果在另外一台服务器,分区的主区IP填写主区服务器外网IP或内网可达IP。

所有区的通讯端口必须一致。默认端口可使用 4900。

二、配置示例

服务器A开3个区:gameofmir1、gameofmir2、gameofmir3,服务器A外网IP为 116.236.250.102。

服务器B开3个区:gameofmir4、gameofmir5、gameofmir6。

gameofmir1 设置成主区,通讯端口 4900。

gameofmir2、gameofmir3 设置成分区,通讯IP填写 127.0.0.1,端口 4900。

gameofmir4、gameofmir5、gameofmir6 设置成分区,通讯IP填写 116.236.250.102,端口 4900。

三、专区(子服/分区)跨到中央服务器命令

格式:

M2SpanRegion 保存模式 地图代码 X坐标 Y坐标 [坐标范围]

参数说明:

保存模式 0:不保留人物数据,不回传数据。玩家小退或大退回到原区后,所有数据回到执行命令那一刻。

保存模式 1:接收并回传人物数据。跨服服务器小退、大退或被遣返后,回到原区会保存跨服后的角色数据。

保存模式 2:人物数据不保存,效果类似模式0,但会保存 U500-U599、T500-T599 变量并传回子区。

地图代码:进入中央服务器后的地图编号。

X坐标、Y坐标:进入中央服务器后的坐标。

坐标范围:可选参数,填写后随机传送到指定范围内。

示例:

[@main]
#ACT
;跨到主区3号地图,坐标330 330,不回传人物数据
M2SpanRegion 0 3 330 330

[@跨服保存数据]
#ACT
;跨到主区3号地图,坐标330 330,退出时回传人物数据
M2SpanRegion 1 3 330 330

[@只保存变量]
#ACT
;人物数据不回传,只回传 U500-U599 和 T500-T599
M2SpanRegion 2 3 330 330

四、中央服务器(母区/主区)遣返回原服务器命令

说明:除小退或大退自动返回之外,也可以在中央服务器脚本中强制把跨服角色遣返回原区。一般情况下不需要使用,按活动或副本需要使用。

格式:

M2ReturnRegion 保存模式 地图代码 X坐标 Y坐标 [坐标范围]

参数说明:

保存模式 0:不保留人物数据。

保存模式 1:传回人物数据。

保存模式 2:人物数据不保存,但传回 U500-U599、T500-T599 变量。

地图代码、X坐标、Y坐标、坐标范围:角色回到原区后的落点参数。

示例:

[@返回原区]
#ACT
M2ReturnRegion 1 3 330 330

[@活动结束返回]
#ACT
M2ReturnRegion 2 3 330 330 5

五、相关检测命令和变量

检测角色是否为跨区角色:

#IF
IsSpanRegionHumam
#ACT
SendMsg 6 你是跨服玩家,原服玩家名:<$OldUserName>,服务器名:<$OldServerName>,服务器ID:<$OldServerID>

兼容写法:

#IF
IsSpanRegionHuman
#ACT
SendMsg 6 当前角色来自跨服。

可用变量:

<$OldUserName>:跨服前原服务器角色名。

<$OldServerName>:专区/分区服务器名称。

<$OldServerID>:专区/分区服务器ID。

六、跨服活动脚本示例

[@main]
请选择跨服功能:\
<进入跨服活动/@进入跨服>\
<返回原区/@返回原区>

[@进入跨服]
#IF
IsSpanRegionHumam
#ACT
SENDMSG 6 你已经是跨服角色,不能重复跨服。
break
#ACT
;模式1表示角色数据会在退出或返回时传回原区
M2SpanRegion 1 3 330 330 5

[@返回原区]
#IF
IsSpanRegionHumam
#ACT
M2ReturnRegion 1 3 330 330 5
#elseact
SENDMSG 6 你不是跨服角色。

七、离线挂机和跨服限制

母区有离线挂机脚本时,必须在挂机脚本前检测跨服角色,防止专区角色在中央服务器进入离线挂机。

#IF
IsSpanRegionHumam
#ACT
SENDMSG 6 跨服角色禁止离线挂机。
break

跨服服务器禁止使用动态IP。分区填写的是主区通讯地址,动态IP变化后会导致分区无法稳定连接主区。

子区正常关闭时,正在跨服的角色会自动掉线并按命令保存模式返回数据。服务器宕机、引擎无响应、强制结束进程时,正在跨服角色不会正常掉线和回传数据,请注意运维风险。

八、变量保存模式注意事项

如果不用跨服,或跨服不用保存模式2,那么 U500-U599、T500-T599 可以在服务端正常脚本中随意使用。

如果使用保存模式2,U500-U599、T500-T599 会从母区传回子区保存。写版本时请预留这些变量,避免与其它系统混用。

九、命名和数据兼容注意事项

跨服改名长度不要超过32个字符。默认显示为“专区名_角色名”,所以子区服务器名称不要过长,建议不要超过16个汉字,否则显示可能不全。

所有跨服区服必须保持角色数据结构、物品DB、技能DB、地图、脚本、变量约定一致。跨服活动开始前建议先用测试角色验证装备、变量、地图、回传数据是否正常。

十、推荐稳定实现方式

1、只设置一个主区,主区负责接收分区连接和跨服角色。

2、分区只主动连接主区,不允许分区之间互连。

3、主区通讯端口固定,防火墙只放行分区服务器IP。

4、跨服活动地图建议独立配置,避免普通玩家和跨服玩家混用关键NPC脚本。

5、涉及奖励、排行、拍卖、交易、离线挂机等系统时,先检测 IsSpanRegionHumam,再决定是否允许跨服角色参与。

6、保存模式0适合临时体验活动;保存模式1适合完整跨服玩法;保存模式2适合只传回活动积分、次数、标记等变量的玩法。