欢迎光临散文网 会员登陆 & 注册

[迷你地铁]自定义地图创建指南(四)

2021-02-17 23:04 作者:高_明  | 我要投稿

本文来自迷你地铁官方自定义地图指南,由Up主-高明-个人翻译,但保留英语原文。

注意:本编指南极长,且包含部分晦涩难懂的知识,仅适用于一心想要创建自定义地图的迷你地铁玩家。

原文链接:https://steamcommunity.com/sharedfiles/filedetails/?id=2295902845

第一篇:CV9457864        第二篇:CV9868683        第三篇:CV9868830


本段目录

  • Permanent Lines 永久线路

  • Transitions 过渡特效

  • Previews 预览图

  • Achievements 成就

Permanent Lines 永久线路

Permanent Lines are a new feature for Community Maps. Lines in your map can be configured to appear at the start of the game and be connected to your initial stations. Trains can be setup to run on these lines from the start. Permanent lines can be configured to allow or disallow editing the line, and separately allow or disallow editing trains on the line.

永久线路是社区地图的一项新特性。社区地图可以设置在游戏开始就存在并运行机车的线路。永久线路可以被设定为不可修改,也可以设定为可以修改。

This might be commuter rail lines that connect to stations off the map, which will bring passengers into the city. A permanent line could also be used to add a fixed downtown line or loop that the player has to build around or on top of. Or, they can just give your map some extra flair! You should experiment with this new mechanic.

永久线路可以作为从地图之外的车站将乘客运送进地图内车站的通勤线路,也可以作为市中心的固定线路,并让玩家以此为基础向外扩展。或者就是为了让你的地图显得高级一些!你应该尝试一下这个新机制。

"lines": [

            {

                        "maxTrains": 4,

                        "allowedTrains": ["Locomotive", "Carriage"],

                        "links": [

                                    {

                                                "station": "Uruguai-L1",

                                                "stops": [

                                                            {"direction": "EAST", "platform": 0},

                                                ],

                                    },

                                    {

                                                "station": "Estacio-L1",

                                                "stops": [

                                                            {"direction": "SOUTHWEST", "platform": 0},

                                                            {"direction": "NORTHEAST", "platform": 0},

                                                ],

                                    },

                                    {

                                                "station": "Central-L1L2",

                                                "stops": [

                                                            {"direction": "WEST", "platform": 0},

                                                            {"direction": "EAST", "platform": 0},

                                                ],

                                    },

                                    [...]

                                    {

                                                "station": "Botafogo-L1L2",

                                                "stops": [

                                                            {"direction": "NORTHEAST", "platform": 0},

                                                ],

                                    },

                        ],

                        "startAssets": [

                                    "Locomotive",

                                    "Locomotive",

                                    "Carriage",

                                    "Carriage",

                        ],

                        "canEditTrains": false,

                        "loop": false,

            },

            [...]

]

To set up a permanent line, you must have "links" and "startAssets" in the corresponding line dictionary.

如果想要建造一条永久线路,必须在线路字典中包含 "links" 与 "startAssets" 变量。

 

Links - Drawing the Permanent Line 画出永久线路

"links": [

            {

                        "station": "Uruguai-L1",

                        "stops": [

                                    {"direction": "EAST", "platform": 0},

                        ],

            },

            {

                        "station": "Estacio-L1",

                        "stops": [

                                    {"direction": "SOUTHWEST", "platform": 0},

                                    {"direction": "NORTHEAST", "platform": 0},

                        ],

            },

            [...]

            {

                        "station": "Botafogo-L1L2",

                        "stops": [

                                    {"direction": "NORTHEAST", "platform": 0},

                        ],

            },

],

The links value contains an array of dictionaries, with each corresponding to a station that the line will link to, in order from first to last. A permanent line must have at least two links.

Links 变量是一个包括若干字典的数组,其中每一项都按顺序对应线路上的一座车站。一条永久线路至少要有两个 links。

"station": "Uruguai-L1",

The "station" string must refers to the unique station "tag" that you configured while creating the "stations" dictionary.

"station" 字符串对于每一座车站来说都必须是独一无二的,它代表了每一座车站的身份。

Make sure that you only connect to stations where you have set a "position" array, and that the value here matches the station tag exactly.

务必确保永久线路联通的车站的坐标是已经确定的,并且车站的名称与字典中的名称相匹配。

"stops": [

            {"direction": "SOUTHWEST", "platform": 0},

            {"direction": "NORTHEAST", "platform": 0},

],

Within each link, the "stops" array of dictionaries describes how the line will enter and exit the station.

在每个 link 中,"stops" 数组决定了线路将如何穿过车站。

The first and last links in a permanent line must have one stop. All other links in-between must have two stops.

永久线路的两个终点站只能有一个 stop,而中间的车站必须有两个 stops。

Each stop dictionary contains a "direction value". The first dictionary's "direction" will determine which way the line will enter the station from, and the second determines the direction that the line leaves the station from.

每一个 stop 字典都包含一个方向变量,第一个方向变量决定了线路从车站的哪个方向进入,而第二个方向变量则决定线路从车站的哪边离开。

Valid "direction" values are "NORTH", SOUTH, EAST, WEST, NORTHWEST, NORTHEAST, SOUTHWEST, and SOUTHEAST.

可用的方向值包括"NORTH", "SOUTH", "EAST", "WEST", "NORTHWEST", "NORTHEAST", "SOUTHWEST", 和 "SOUTHEAST",即北、南、东、西和西北、东北、西南、东南。

"platform": 0,

The platform value is an integer that determines the offset of the line, left or right, as it enters and exits the station.

"platform" 变量是一个整型变量,用于确定线路进出车站时的位置。

You’ll only need to change this if you have multiple lines coming into or out of the station in the same direction. Two permanent lines should not enter or exit from the same "direction" with the same "platform" value.

只有在多条永久线路通过的车站才需要修改此变量。两条永久线路不能从同一方向进入或离开一座车站,它们的 "platform" 值也不能相等。

 

Start Assets - Running Trains on Permanent Line 永久线路上的机车

"startAssets": [

            "Locomotive",

            "Locomotive",

            "Carriage",

            "Carriage",

],

The "startAssets" array provides the line with a list of Train and Carriage assets to setup on the line at the start of the game. You can include "Locomotive", "Tram", "Shinkansen", and "Carriage" assets in this array.

"startAssets" 数组为一条永久线路定义了其初始存在的机车和车厢。除了 "Locomotive",你也可以使用 "Tram" 和 "Shinkansen" 两种机车。

Listing all of the Train assets before listing Carriages works best to ensure the carriages are evenly distributed among trains.

尽量将所有机车元素列在车厢之前,这样车厢将被平均分配至每一辆机车。

Assets in this array will not be deduced from your initial upgrades list, nor will any required "Crossing" assets if the line goes over a water obstacle. The game will add as many as needed, automatically.

永久线路中的财产不会与初始财产冲突,其上的桥梁或隧道也不会从玩家财产中扣除。游戏会自动为永久线路配置财产。

Be aware that assets added will count towards the maximum number of assets, when set for a weekly upgrade option, or for the maximum number of trains on a line, and so on.

然而永久线路上的财产会计入每一种财产的总数量,它会影响每周开始时的升级。

 

Other Permanent Line Values 其它永久线路变量

"canEdit": false,

The "canEdit" boolean value configures whether this line can be moved by the player after it's initially generated. If this value is not present, it will default to false.

"canEdit" 布尔变量决定了永久线路能否被修改或移除,其默认值为 false。

"canEditTrains": false,

The "canEditTrains" boolean value configures whether trains on this line can be picked up and moved, and if new lines from the player’s supply can be added to the line. If this value is not present, it will default to false.

"canEditTrains" 布尔变量决定了永久线路上的机车能否添加或移除,其默认值为 false。

"loop": false,

If the "loop" boolean is set to true, trains on the line will loop instead of moving back and forth between the two terminal stations.

如果把 "loop" 变量设置为 true,则线路将以环线,而不是往返线路的形式运行。

For a loop, make sure that the first and last link are connected to the same station tag. Otherwise, the trains will appear to teleport from one terminal to the other.

如果永久线路是环线,请确保线路两头的终点站是同一座车站,否则机车到达终点站后会传送到另一座终点站并继续行驶。

 


Transitions 过渡特效

It’s important to include a background obstacle in your city, since this will let the background map colour show up correctly during the transition from the menu to your level. If you leave out a background, you’ll notice that as the gameplay begins, your background colour will very suddenly pop in.

为地图设置一个背景至关重要,因为从游戏目录跳转到游戏画面时地图外的背景将会显露出来。如果你省略了背景,在游戏开始时,背景颜色将会瞬间出现。(Up注:但不会影响游戏进程)

 

Camera Transitions 视角过渡

In addition, the "transitions" array in your city.json main dictionary lets you confirm how the camera will move to enter your map.

此外,city.json 文件主字典中的 "transitions" 数组起到确定相机视角移动方向的功能。

"transitions": [

            {

                        "points": [

                                    [-10000, 8000],

                                    [0, 0],

                        ],

                        "id": "menu-game",

            },

            {

                        "points": [

                                    [-10000, 8000],

                                    [0, 0],

                        ],

                        "id": "menu-pause",

            },

],

The "id" value configures which camera path you're setting, with each dictionary in the array. You should only need "menu-game", which sets the path from the Main Menu into the map, and "menu-pause", which sets the path from your Pause Menu in-game back to the Main Menu.

在每个字典中的 "id" 变量设定了移动相机的时机。你只需要设定两个 "id",分别是 "menu-game",即从游戏主菜单过渡到地图,和 "menu-pause",从暂停界面过渡回游戏主菜单。

You can modify the path that the camera take into the map by editing the "points" array.

你可以通过修改 "points" 数组来改变相机聚焦的位置。

"points": [

            [-10000, 8000],

            [0, 0],

],

The "points" array defines a path that the camera will follow during the transition into or out of the game. Each array inside the array needs an X and Y float value.

"points" 数组定义了一条线路,相机会沿着这些点组成的线段从一段过渡到另一端。每一个坐标都需要一个横坐标值和一个纵坐标值。

Your transitions should always end at [0,0], and needs at least two points.

过渡的终点必须是 [0,0],且路径中至少需要两个点。

 


Previews 预览图

The "preview" dictionary inside your city.json file's main dictionary lets you define how the map icon will appear in the Play menu, before starting a new game.

city.json 主字典中的 "preview" 字典可用于定义游戏菜单中该地图的预览图。

"preview": {

            "window": {

                        "position": [-250, -175],

                        "size": 800

            },

            "hidePermanentLines": true,

},

For a basic preview, you must have a "window" dictionary. This will pick out a Square area of the map obstacles to show as a preview. Make sure that "inPreview" is set to true in the obstacle dictionary, for any obstacles that you want to appear in the preview window.

基础预览图必须包含一个 "window" 字典。它会从游戏地图中框选出一个正方形区域作为预览,请确保该区域包含的障碍物的 "inPreview" 变量设置为 true。

Inside the "window" dictionary, the "position" array configures the [X, Y] coordinates for the bottom-left corner of the preview window.

在 "window" 字典中, "position" 数组设定了预览框左下角的坐标值。

The "size" value sets how large the window will be on each side of the Square.

"size" 变量决定了预览框在在地图尺度上的大小,即正方形的边长。

"hidePermanentLines": true,

The boolean value "hidePermanentLines" can be set to true to hide the colours of any permanent lines in the row of circles corresponding to the line colours, which appear below the preview window.

将布尔变量 "hidePermanentLines" 设置为 true 可以在预览图下的线路颜色列表中隐藏永久线路对应的线路颜色小圆。

 

Adding Stations and Lines 在预览图中添加车站和线路

To draw stations and lines inside the preview window, you can add these inside of the "preview" dictionary, the same way you would define stations and lines in the map.

如果你想在预览图中添加车站和线路,你可以在 "preview" 字典中加入以下代码,它和在地图中定义线路的道理一样。

"preview": { 

            "window": { 

                        "position": [-400,-450], 

                        "size": [1000,1000] 

            },

             "stations": [

                        { "ghost": false, "position": [15.0, 80.0], 

                                    "tag": "triangle.br", "type": "Square", },

                        { "ghost": false, "position": [-185.0,80.0],  

                                    "tag": "triangle.rg", "type": "triangle", },

                        { "ghost": false, "position": [-85.0, -100.0],  

                                    "tag": "triangle.bg", "type": "triangle", },

                        { "ghost": false, "position": [-350.0, 150.0],  

                                    "tag": "red1", "type": "circle", },

                        { "ghost": true, "position": [410.0, 0.0],  

                                    "tag": "red2", "type": "circle", },

                        { "ghost": false, "position": [525.0,100.0],  

                                    "tag": "red3", "type": "circle", },

                        { "ghost": false, "position": [-250.0, 282.0],  

                                    "tag": "green1", "type": "circle", },

                        { "ghost": false, "position": [70.0, -360.0],  

                                    "tag": "green2", "type": "circle", },

                        { "ghost": false, "position": [15.0, 474.0], 

                                    "tag": "blue1", "type": "circle", },

                        {"ghost": false, "position": [-250.0, -360.0],  

                                    "tag": "blue2", "type": "circle", },

            ],

            "lines": [

                        {

                                    "index": 0,

                                    "links": [

                                                { "station": "red1", "stops": [ { "direction": "SOUTHEAST", "platform": 0 } ] },

                                                { "station": "triangle.rg",

                                                            "stops": [ { "direction": "WEST", "platform": 0 },

                                                                        { "direction": "EAST", "platform": 0 }

                                                            ]

                                                },

                                                { "station": "triangle.br",

                                                            "stops": [ { "direction": "WEST", "platform": 0 },

                                                                        { "direction": "SOUTHEAST", "platform": 0 }

                                                            ]

                                                },

                                                { "station": "red2",

                                                            "stops": [ { "direction": "WEST", "platform": 0 },

                                                                        { "direction": "EAST", "platform": 0 }

                                                            ]

                                                },

                                                { "station": "red3",

                                                            "stops": [ { "direction": "SOUTHWEST", "platform": 0 } ]

                                                }

                                    ]

                        },

                        {

                                    "index": 1,

                                    "links": [

                                                { "station": "blue1",

                                                            "stops": [ { "direction": "SOUTH", "platform": 0 } ]

                                                },

                                                { "station": "triangle.br",

                                                            "stops": [ { "direction": "NORTH", "platform": 0 },

                                                                        { "direction": "SOUTH", "platform": 0 }

                                                            ]

                                                },

                                                { "station": "triangle.bg",

                                                            "stops": [ { "direction": "NORTHEAST", "platform": 0 },

                                                                        { "direction": "SOUTHWEST", "platform": 0 }

                                                            ]

                                                },

                                                { "station": "blue2",

                                                            "stops": [ { "direction": "NORTH", "platform": 0 } ]

                                                }

                                    ]

                        },

                        {

                                    "index": 1,

                                    "links": [

                                                { "station": "green1",

                                                            "stops": [ { "direction": "SOUTHEAST", "platform": 0 } ]

                                                },

                                                { "station": "triangle.rg",

                                                            "stops": [ { "direction": "NORTH", "platform": 0 },

                                                                        { "direction": "SOUTH", "platform": 0 }

                                                            ]

                                                },

                                                { "station": "triangle.bg",

                                                            "stops": [ { "direction": "NORTHWEST", "platform": 0 },

                                                                        { "direction": "SOUTHEAST", "platform": 0 }

                                                            ]

                                                },

                                                { "station": "green2",

                                                            "stops": [ { "direction": "NORTH", "platform": 0 } ]

                                                }

                                    ]

                        },

            ],

            "hidePermanentLines": true,

},

The example above is from the Mini Metro More - Kyiv map, and shows how to setup preview stations and preview lines.

以上这段示例代码来自一张基辅地图,它展示了该如何在预览图中画出车站和线路。

Stations and Lines in the "preview" dictionary will only appear in the preview, and don't affect gameplay otherwise.

"preview" 字典中的车站和线路只会在预览图中显示,不会影响游戏过程。

Stations all must have a unique "tag" string, "position" array with an X and Y value, and a "type". The "ghost" boolean can be set to true to hide stations from being drawn, but still connect them to a line to create more complex line curvature.

这里的车站必须有一个独一无二的 "tag" 标签字符串,一个 "position" 坐标数组,以及一个 "type" 来定义车站种类。"ghost" 布尔变量可以被设置为 true,这样线路会经过这座车站,但车站本身不会显示,这可以用来为线路设置更复杂的走向。

Each line needs a "links" array, as if it was a Permanent Line. Refer to the Permanent Line section on how to setup the Links array. The link "station" values in preview lines can only refer to the tag of preview stations, and not stations in the general gameplay "stations" array.

就像永久线路那样,每条预览线路都要有一个 "links" 数组。它们的工作方式相同,但这里的 "station" 值只会指代至预览车站,不会指代到其它地方的车站数组。

Unique to Preview Lines, you can include an "index" value on each line, to denote which line colour should be used. The first line colour in your theme.json Line Colours will be index 0, the second will be index 1, and so on.

你可以为预览线路添加一个 "index" 变量用于为其上色。theme.json 中的第一条线路颜色的指数为0,第二个为1,以此类推。

 


Achievements 成就

You can setup custom challenges by adding an achievements.json file into your city folder. This file is a dictionary formatted like the JSON below.

你可以在地图文件夹中创建一个 achievements.json 文件以设置一个自定义挑战成就。

{

            "achievements": [

                        {

                                    "id": "casablanca-1",

                                    "city": "casablanca",

                                    "difficultyPriority": 0,

                                    "type": "score",

                                    "score": 500,

                                    "customDescription": "score 500 points with two lines on Casablanca.",

                                    "icon": "passenger",

                                    "restrictions": [

                                                {"max": 2, "type": "Line", "scope": "Global"}

                                    ],

                        },

                        [...]

            ],

}

The "achievements" array contains a list of unique dictionaries. Each dictionary will correspond to one challenge in your map.

"achievements" 数组包含一系列特殊字典,每一个字典都对应一项挑战。

"id": "casablanca-1",

Each achievment must have a unique "id" string.

每一项挑战都必须有一个独一无二的 "id" 字符串。

"city": "casablanca",

The "city" string must correspond to the city "id" in your city.json file.

此处的 "city" 字符串需与 city.json 文件中的城市 "id" 相同。

"difficultyPriority": 0,

If you’re making multiple achievements for the map, you can set the "difficultyPriority" integer value to order of your challenges from lowest to highest, in the Achievements screen.

如果一张地图有多个成就,你需要用整型变量 "difficultyPriority" 确定它们的显示顺序。

Achievements have to have one of two possible type values: score or Day.

成就中必须要包含 "type" 变量,它的值可以是 score 或者 Day。

"type": "score",

"score": 500,

If the "type" is score, then the "score" value will set the number of passengers that the player has to move to complete the challenge.

如果 "type" 的值是 score,那么 "score" 变量就会规定你完成这项挑战必须到达的分数。

"type": "Day",

"day": 35,

If the "type" is Day, then the "score" or "day" value will set the number of days that the player has to pass without having a station overflow, to complete the challenge.

如果 "type" 的值是 Day,那么 "day" 变量就会规定完成挑战必须到达的天数。

"customDescription": "score 500 points with two lines on Casablanca.",

"icon": "passenger",

The string value "customDescription" lets you describe the challenge for the map in your own words, and this will appear on the Achivement screen for the map.

"customDescription" 字符串可以用于显示关于该项挑战的描述,它会显示在成就界面中。

The "icon" string value will pick which icon to use for the map. You can choose various icons, which are listed in the Achievement Icons appendix.

"icon" 字符串会为这项挑战选定一个小图标。有多个图标可供选择,具体可在附录中查看。

The icon is strictly cosmetic, so pick whatever suits the challenge best!

图标只有装饰作用,所以你可以尽情挑选最适合这项挑战的图标。

 

Restrictions 限制

"restrictions": [

            {

                        "max": 2, 

                        "type": "Line", 

                        "scope": "Global",

            },

            {

                        "min": 1, 

                        "type": "Loop", 

                        "scope": "Line",

            },

],

Finally, the "restrictions" array of dictionaries let you add extra rules that the player needs to follow to beat the challenge. Each dictionary adds a restriction, and you can include no restrictions at all, or as many as you like.

最后,"restriction" 数组可用于添加其它挑战规则。每一个字典代表一项规则,你可以不添加其它限制,或者添加任意数量的限制。

"max": 2, "type": "Line",

Restrictions have a "type", and a "max" or "min" value, or both.

限制条件包含一个 "type" 变量,以及一个 "max" 或 "min" 变量,也可同时包含 max 和 min。

Together, these effectively say, “don’t have more than the max number, or less than the min number, of this type of thing.” The example above says, “don’t use more than two lines”.

这些变量组合在一起表示“某种物件的数量不能超过最大值,也不能低于最小值”,在本例子中该代码意为“不能使用超过两条线路”。

Valid types are as follows:

可用的 "type" 值有以下几种:

  • "Line": Counts the lines actively used,      but not ones unused in the toolbar, including any permanent lines.

"Line":已经使用的线路数量,包括永久线路。

  • "Locomotive": Counts the Locomotives,      Trams, and Shinkansen actively used, but not ones unused in the toolbar,      including on any permanent lines.

"Locomotive":正在运行的所有机车的数量,包括永久线路上的机车。

  • "Carriage": Counts the Carriages      actively used, but not ones unused in the toolbar, including on any      permanent lines.

"Carriage":已经使用的车厢的数量,包括永久线路上的车厢。

  • "Crossing": Counts the number of      Tunnels or Bridges used, as in, the number of times lines have to cross a      water obstacle, include permanent lines.

"Crossing":已经使用的桥梁或隧道的数量,包括永久线路上的桥梁和隧道。

  • "Loop": Counts the number of loops. Each      line that is looping counts as one loop, including permanent lines.

"Loop":环线的数量,每一条首尾相连的线路都被视作环线,包括永久线路。

  • "Station": Counts the number of      stations connected to a line.

"Station":一条线路上的车站数量。

  • "Hub": Counts the number of stations      which are linked to all lines, including permanent lines.

"Hub":被所有线路通过的车站的数量,包括永久线路。

"scope": "Global",

In addition, the "scope" value sets the context that the restriction applies.

此外,"scope" 变量设定了该限制条件作用的范围。

Valid scopes are as follows:

以下是可用的 scope 值:

  • "Global": Means anywhere in the map.      This works for all types, except for "Station".

"Global":范围为整张地图,适用于除 "Station" 外的的其它所有 "type" 值。

  • "Line": Counts the "type" per      each line. This lets you set a max or min value allowed of the type for      each line individually. This can be used with any type except      "Line", or "Hub". Note that type "Loop" per      scope "Line" with either be 0, is not looping, or 1, if looping.      This restriction will apply to permanent lines as well.

"Line":在每一条线路上计算 "type" 值对应的数量。你可以为每条线路设定单独的上下限。该范围适用于除 "Line" 和 "Hub" 之外的 "type" 值。不过 "Line" 范围下的 "Loop" 值只会是0或1,取决于一条线路本身是否是环线。该限制也会作用于永久线路。

  • "Square": Only allowed with type      "Line". This lets you set the maximum or minimum number of lines      connected to each Square type station. This includes permanent lines.

"Square":只适用于 "type" 值为 "Line" 的限制条件。规定了可以连接正方形车站的线路数量,也包括永久线路。

  • "Crossing": Only allowed with type      "Line". This lets you set the maximum number of lines that      use any Tunnels or Bridges at all. This includes      permanent lines.

"Crossing":只适用于 "type" 值为 "Line" 的限制条件。它规定了可以使用隧道或桥梁的线路数量,也包括永久线路。

Examples 示例

Here are some example achievement restrictions.

以下是一些规则示例。

{"max": 6, "type": "Carriage", "scope": "Global"}

“Don’t use more than 6 carriages anywhere.”

“总共不能使用超过6节车厢。”

{"max": 3, "type": "Locomotive", "scope": "Line"}

“Don’t use more than 3 locomotives on each line.”

“每条线路不能有超过3辆机车。”

{"max": 1, "type": "Loop", "scope": "Global"}

“Don’t use more than one loop line in total.”

“总共只能有一条环线。”

{"min": 1, "type": "Hub", "scope": "Global"}

“Have at least one station connected to all lines.”

“至少有一座车站被所有线路连接。”

{"min": 1, "type": "Loop", "scope": "Line"}

“Use at least one loop on each line.”, or, “Make every line a loop.”

“所有线路都必须是环线。”

{"max": 0, "type": "Loop", "scope": "Line"}

“Don't use any loops.”

“不要使用任何环线。”

{"max": 2, "type": "Line", "scope": "Square"}

“Have at most two lines with Squares.”

“只能有两条线路通过正方形车站。”

{"max": 1, "type": "Line", "scope": "Crossing"}

“Have only one line with any tunnels.”

“只有一条线路能使用隧道。”

{"max": 2, "type": "Crossing", "scope": "Global"}

“Only use two tunnels in total.”

“总共只能使用2条隧道。”

[迷你地铁]自定义地图创建指南(四)的评论 (共 条)

分享到微博请遵守国家法律