出处:
https://www.wowhead.com/news/additional-player-housing-information-possibly-found-on-cataclysm-classic-ptr-366294
[img]./mon_202501/27/8mQv0bm-ikjyZxT3cS18g-vp.jpg[/img]
我们在最新的《大灾变怀旧服》PTR(公共测试服务器)中数据挖掘出了一个有趣的文件,这可能让我们首次窥见即将在《至暗之夜》扩展中推出的玩家住房系统!
**注意**:这些信息在怀旧服中是全新的,并未出现在原始版本中。尽管这些数据是通过怀旧服客户端挖掘的,但并没有明确迹象表明玩家住房系统会实际出现在《大灾变》中。由于不同游戏客户端之间的数据共享机制,我们经常可以在一个版本中挖掘到另一个版本的数据,即使这些数据并不属于该特定版本。
**目录**
- 玩家住房线索?
- 玩家住房分类
- 这意味着什么?
- 为什么是怀旧服PTR?
- PlayerHousingConstantsDocumentation.lua
---
### 玩家住房线索?
在最新的《大灾变怀旧服》PTR中,新增了一个名为**PlayerHousingConstantsDocumentation.lua**的文件。从文件名来看,这可能与即将在《至暗之夜》扩展中推出的玩家住房系统有关,为我们提供了一些关于该系统如何运作的线索。目前官方尚未公布任何细节,因此玩家们对系统的运作方式充满疑问,而这个文件可能提供了一些答案。
当然,由于这是数据挖掘的结果,并且出现在《大灾变怀旧服》PTR中,这个文件可能并不准确或已过时。
---
### 玩家住房分类
该文件以.lua格式编写,我们对其中的一些选项进行了总结。玩家住房中的物品似乎可以分为以下几类:
**住房装饰:**
- **标志**:室内、室外
- **模型类型**:无、M2、Wmo
- **主题**:无、乡村、粗犷、通用、奢华
- **类型**:无、地板、墙壁、天花板、桌面
**住房外观:**
- **组件尺寸**:任意、小型、中型、大型
- **组件主题**:人类
**权限:**
- 添加装饰、更改装饰参数、进入装饰编辑模式、移动装饰、移除装饰、保存房屋、选择装饰、编辑布局
**结果:**
- 成功、数据库错误、RPC失败、通用失败、锁定操作失败、解锁操作失败、被其他玩家锁定、装饰未找到、房屋未找到、权限被拒绝、未处于装饰编辑模式、不在房屋内、服务不可用、房间未找到、房间更新失败、未处于布局编辑模式、地块未找到、达到装饰上限
**住房房间组件:**
- **门类型**:无、窄门、大门
- **选项类型**:装饰、门道墙、门道
- **类型**:无、墙壁、地板、天花板、楼梯、立柱
**住房房间标志:**
- 无、基础房间
---
### 这意味着什么?
虽然信息量很大,但这些内容意味着什么呢?从文件中可以看出以下几点:
- 玩家住房似乎是一个完全可自定义的模式,[del]类似于《狂野星球》或《最终幻想14》的住房系统。 [/del]
- 玩家可以进入“编辑模式”,在房屋中编辑、移动、移除并保存装饰物品。
- 装饰物品被分为多个类别,包括室内外放置、放置表面(如地板、墙壁、天花板)以及尺寸。
- 还有门、楼梯甚至柱子的选项。
- 物品可能被其他玩家锁定,并且有关于无地块、无房间、无房屋的错误提示。
这或许是完全自定义性质的玩家住房系统的开端,而这正是许多玩家所共同期待的!
---
### 为什么是在怀旧服PTR?
一些玩家可能会觉得奇怪,为什么这些信息会在《大灾变怀旧服》PTR中被发现,而不是在正式服版本中。这可能是因为暴雪试图将这些信息隐藏在“意料之外”的地方,避免被轻易发现。当然,这也可能毫无意义——毕竟,官方从未表示玩家住房系统会出现在怀旧服游戏中。我们只能等待《至暗之夜》资料片的到来,看看它会带来什么惊喜!
---
### 关于PlayerHousingConstantsDocumentation.lua
以下是该文件的完整代码:
local PlayerHousingConstants =
{
Tables =
{
{
Name = "HousingDecorFlags",
Type = "Enumeration",
NumValues = 2,
MinValue = 1,
MaxValue = 2,
Fields =
{
{ Name = "Exterior", Type = "HousingDecorFlags", EnumValue = 1 },
{ Name = "Interior", Type = "HousingDecorFlags", EnumValue = 2 },
},
},
{
Name = "HousingDecorModelType",
Type = "Enumeration",
NumValues = 3,
MinValue = 0,
MaxValue = 2,
Fields =
{
{ Name = "None", Type = "HousingDecorModelType", EnumValue = 0 },
{ Name = "M2", Type = "HousingDecorModelType", EnumValue = 1 },
{ Name = "Wmo", Type = "HousingDecorModelType", EnumValue = 2 },
},
},
{
Name = "HousingDecorTheme",
Type = "Enumeration",
NumValues = 5,
MinValue = 0,
MaxValue = 4,
Fields =
{
{ Name = "None", Type = "HousingDecorTheme", EnumValue = 0 },
{ Name = "Folk", Type = "HousingDecorTheme", EnumValue = 1 },
{ Name = "Rugged", Type = "HousingDecorTheme", EnumValue = 2 },
{ Name = "Generic", Type = "HousingDecorTheme", EnumValue = 3 },
{ Name = "Opulent", Type = "HousingDecorTheme", EnumValue = 4 },
},
},
{
Name = "HousingDecorType",
Type = "Enumeration",
NumValues = 5,
MinValue = 0,
MaxValue = 4,
Fields =
{
{ Name = "None", Type = "HousingDecorType", EnumValue = 0 },
{ Name = "Floor", Type = "HousingDecorType", EnumValue = 1 },
{ Name = "Wall", Type = "HousingDecorType", EnumValue = 2 },
{ Name = "Ceiling", Type = "HousingDecorType", EnumValue = 3 },
{ Name = "Tabletop", Type = "HousingDecorType", EnumValue = 4 },
},
},
{
Name = "HousingExteriorComponentSize",
Type = "Enumeration",
NumValues = 4,
MinValue = 1,
MaxValue = 4,
Fields =
{
{ Name = "Any", Type = "HousingExteriorComponentSize", EnumValue = 1 },
{ Name = "Small", Type = "HousingExteriorComponentSize", EnumValue = 2 },
{ Name = "Medium", Type = "HousingExteriorComponentSize", EnumValue = 3 },
{ Name = "Large", Type = "HousingExteriorComponentSize", EnumValue = 4 },
},
},
{
Name = "HousingExteriorComponentTheme",
Type = "Enumeration",
NumValues = 1,
MinValue = 1,
MaxValue = 1,
Fields =
{
{ Name = "Human", Type = "HousingExteriorComponentTheme", EnumValue = 1 },
},
},
{
Name = "HousingPermission",
Type = "Enumeration",
NumValues = 8,
MinValue = 1,
MaxValue = 128,
Fields =
{
{ Name = "AddDecor", Type = "HousingPermission", EnumValue = 1 },
{ Name = "ChangeDecorParam", Type = "HousingPermission", EnumValue = 2 },
{ Name = "EnterDecorEditMode", Type = "HousingPermission", EnumValue = 4 },
{ Name = "MoveDecor", Type = "HousingPermission", EnumValue = 8 },
{ Name = "RemoveDecor", Type = "HousingPermission", EnumValue = 16 },
{ Name = "SaveHouse", Type = "HousingPermission", EnumValue = 32 },
{ Name = "SelectDecor", Type = "HousingPermission", EnumValue = 64 },
{ Name = "EditLayout", Type = "HousingPermission", EnumValue = 128 },
},
},
{
Name = "HousingResult",
Type = "Enumeration",
NumValues = 18,
MinValue = 0,
MaxValue = 17,
Fields =
{
{ Name = "Success", Type = "HousingResult", EnumValue = 0 },
{ Name = "DbError", Type = "HousingResult", EnumValue = 1 },
{ Name = "RpcFailure", Type = "HousingResult", EnumValue = 2 },
{ Name = "GenericFailure", Type = "HousingResult", EnumValue = 3 },
{ Name = "LockOperationFailed", Type = "HousingResult", EnumValue = 4 },
{ Name = "UnlockOperationFailed", Type = "HousingResult", EnumValue = 5 },
{ Name = "LockedByOtherPlayer", Type = "HousingResult", EnumValue = 6 },
{ Name = "DecorNotFound", Type = "HousingResult", EnumValue = 7 },
{ Name = "HouseNotFound", Type = "HousingResult", EnumValue = 8 },
{ Name = "PermissionDenied", Type = "HousingResult", EnumValue = 9 },
{ Name = "NotInDecorEditMode", Type = "HousingResult", EnumValue = 10 },
{ Name = "NotInsideHouse", Type = "HousingResult", EnumValue = 11 },
{ Name = "ServiceNotAvailable", Type = "HousingResult", EnumValue = 12 },
{ Name = "RoomNotFound", Type = "HousingResult", EnumValue = 13 },
{ Name = "RoomUpdateFailed", Type = "HousingResult", EnumValue = 14 },
{ Name = "NotInLayoutEditMode", Type = "HousingResult", EnumValue = 15 },
{ Name = "PlotNotFound", Type = "HousingResult", EnumValue = 16 },
{ Name = "MaxDecorReached", Type = "HousingResult", EnumValue = 17 },
},
},
{
Name = "HousingRoomComponentDoorType",
Type = "Enumeration",
NumValues = 3,
MinValue = 0,
MaxValue = 2,
Fields =
{
{ Name = "None", Type = "HousingRoomComponentDoorType", EnumValue = 0 },
{ Name = "NarrowDoor", Type = "HousingRoomComponentDoorType", EnumValue = 1 },
{ Name = "LargeDoor", Type = "HousingRoomComponentDoorType", EnumValue = 2 },
},
},
{
Name = "HousingRoomComponentOptionType",
Type = "Enumeration",
NumValues = 3,
MinValue = 0,
MaxValue = 2,
Fields =
{
{ Name = "Cosmetic", Type = "HousingRoomComponentOptionType", EnumValue = 0 },
{ Name = "DoorwayWall", Type = "HousingRoomComponentOptionType", EnumValue = 1 },
{ Name = "Doorway", Type = "HousingRoomComponentOptionType", EnumValue = 2 },
},
},
{
Name = "HousingRoomComponentType",
Type = "Enumeration",
NumValues = 6,
MinValue = 0,
MaxValue = 5,
Fields =
{
{ Name = "None", Type = "HousingRoomComponentType", EnumValue = 0 },
{ Name = "Wall", Type = "HousingRoomComponentType", EnumValue = 1 },
{ Name = "Floor", Type = "HousingRoomComponentType", EnumValue = 2 },
{ Name = "Ceiling", Type = "HousingRoomComponentType", EnumValue = 3 },
{ Name = "Stairs", Type = "HousingRoomComponentType", EnumValue = 4 },
{ Name = "Pillar", Type = "HousingRoomComponentType", EnumValue = 5 },
},
},
{
Name = "HousingRoomFlags",
Type = "Enumeration",
NumValues = 2,
MinValue = 0,
MaxValue = 1,
Fields =
{
{ Name = "None", Type = "HousingRoomFlags", EnumValue = 0 },
{ Name = "BaseRoom", Type = "HousingRoomFlags", EnumValue = 1 },
},
},
},
};
APIDocumentation:AddDocumentationTable(PlayerHousingConstants);