更好的物品描述

更好的物品描述

显示增幅/物品的效果值(包括特殊效果)。可自定义且可扩展。

展示物品与强化技能的效果数值。可自定义且可扩展。

此模组与 Better Item Description 功能相似,但远比其优秀,因此我将其命名为 Better Better Item Description

所有 DD2 模组源码均可在 GitHub 上获取。

注意 / 说明

1. 默认完全支持 [color=#00ff00]英文与中文[/color]。其他语言用户将看到英文的详细说明。 但 [size=4]您可以轻松地在 30 分钟内添加一种新语言的翻译。[/size]

用户添加的内置翻译: [color=#00ff00][size=4]阿拉伯语[/size][/color] v0.1(由 DiNaSoR,又名 dragonarab 提供,目前不包括物品常规状态翻译)

用户添加的语言包(需安装模组): [color=#00ff00][size=4]德语[/size][/color] 模组链接,作者:Pyr0blad3 [color=#00ff00][size=4]法语[/size][/color] 模组链接,作者:Mascano

1.5. 繁体中文/英文版本由我翻译,但我对其信心不足。如果您发现翻译不佳之处,请告知我。

2. 显示物品(包括武器/护甲/戒指)和强化技能的详细说明,包括恢复量/增益效果/特殊效果/露营效果数值等。 您可以在配置中禁用武器/护甲的额外细节。 它将在物品/仓库/职业/状态指南菜单中为物品/强化技能显示额外说明。

3. 如果物品有额外细节,新描述将默认替换旧文本。您可以在配置中禁用此功能,以同时显示新描述和旧描述。 当物品有许多细节时,它们将自动换行。您可以配置长度来控制换行方式。 自动选择与您游戏相同的语言。如果不支持您的语言,则使用英文。 您可以在配置中设置 Force using language,以强制模组使用所选语言。

4. 这是一个 Lua 脚本模组,它在运行时读取游戏内数值并生成详细文本。 因此,它几乎不会与所有 pak 模组冲突。 因此它很有可能与新游戏版本兼容。如果新游戏版本中效果数值发生变化,它也会反映新的效果值。 (只能反映“数值”,不能反映“效果”)。 它也能显示未来物品的细节,除非该物品具有新型效果。 (只有少数物品使用手写值而非动态生成值。它们的文本以 ** 开头)

5. 可配置设置 newlinewidth:(仅对物品有效)换行长度 Ignore Status of Armor&Weapon: 设为 true 时不显示护甲/武器的 攻击/防御/击倒/...数值 Ignore Special Effect of Armor&Weapon: 设为 true 时不显示护甲/武器的特殊效果数值 removeOriginalText: 设为 true 时将移除原始描述 Force using this language: 设置为任何非空值时使用选定的翻译文件 NewLineWidthAlsoAffectOriginalText: 字面意思

如何安装?

1. 安装 Reframework 1.5. 安装 _XYZApi(可选。仅在您需要通过 UI 修改设置时需要)

2. 您可以通过 Fluffy Mod Manager 或手动安装

3.1. 通过 Fluffy Mod Manager 安装: 下载此模组并拖入模组管理器。然后在模组管理器中启用它。

3.2. 手动安装: 下载此模组并解压。将 reframework 文件夹复制到游戏文件夹中。如果游戏文件夹中已存在 reframework,则将两个文件夹合并。

如何添加新翻译?

例如,我们制作一个德语翻译。

1. 在 "reframework/data" 中找到一个内置翻译文件,例如:"BetterBetterItemDescription.English.json"。 复制此文件并重命名为 "BetterBetterItemDescription.German.json"。 如果您从以下候选语言名称中选择,此模组可以自动选择语言:

"Japanese","English","French","Italian","German","Spanish","Russian","Polish","Dutch","Portuguese","PortugueseBr","Korean","TransitionalChinese","SimplelifiedChinese","Finnish","Swedish","Danish","Norwegian","Czech","Hungarian","Slovak","Arabic","Turkish","Bulgarian","Greek","Romanian","Thai","Ukrainian","Vietnamese","Indonesian","Fiction","Hindi","LatinAmericanSpanish"

2. 使用记事本或任何软件编辑此文件。将英文翻译替换为您的翻译。

记住不要更改符号。 (如果您无法判断哪些文本需要翻译,可以打开其他翻译文件查看哪些部分已被翻译。)

此文件包含三个部分: AbilityFormat: 强化技能的翻译。只需翻译 "format" 后面的文本。 例如,英文版为:

      "AbilityFormat": {
"10": {
"format": "+{v1} Max Stamina",
"hint": "固定値(150.000000,0.000000)"
},

您需要将其改为:

  "AbilityFormat": {
"10": {
"format": "sadasds21312313aa +{v1} dadasdjnsdioasd(This is german)",
"hint": "固定値(150.000000,0.000000)"
},

"{v1}" 和 "{v2}" 将被实际效果值替换。请保留它们。 "hint" 包含开发者的提示。您可以忽略它。

RingSpecialFormat: 戒指增益的翻译。与 AbilityFormat 类似,只需翻译 "format" 部分。 "hint" 包含具有此增益的戒指。 例如:

"RingSpecialFormat": {
  "1": {
"enable": true,
"format": "+{v1} MaxHP",
"hint": "(3502,Ring of Acclamation,200,0,0)(3501,Ring of Exultation,100,0,0)"
  },

应翻译为:

"RingSpecialFormat": {
  "1": {
"enable": true,
"format": "+{v1} asdasdyh0128diowqdhsa09hio(This is german)",
"hint": "(3502,Ring of Acclamation,200,0,0)(3501,Ring of Exultation,100,0,0)"
  },

FieldFormat: 常见属性的翻译。"format"/"map" 后面的文本以及直接跟在 "_XXX" 后面的文本需要翻译。 例如:

 "_BuyPrice": {
"enable": false,
"format": "BuyPrice %s.",
"type": "String"
},
"_Category": {
"enable": false,
"format": "Cat %s",
"map": [
  "Material",
  "Other",
  "Equip"
],
"type": "Enum"
},
"_DarkDefence": "%s%% Dark Debuff Resist",
"_FireDefence": "%s%% Fire Damage Reduce",

应该是:

"_BuyPrice": {
"enable": false,
"format": "asdsa09dh12ods(this is really german) %s.",
"type": "String"
},
"_Category": {
"enable": false,
"format": "asdsa09dh12ods(this is really german) %s",
"map": [
  "dsagjy(this is really german)",
  "7687yiuhj(this is really german)",
  "gfdh(this is really german)"
],
"type": "Enum"
},
"_DarkDefence": "%s%% zxczxc(this is really german)",
"_FireDefence": "%s%% bbbb(this is really german)",

"%s" 将被实际效果值替换。%% 用于表示单个 "%"。不要更改它们。

3. 使用网页 JSON 格式化工具验证您的文件(您可以通过谷歌轻松找到许多此类工具)

4. 将您的文件放入 reframework/data/ 文件夹中。 如果文件名正确命名为 "BetterBetterItemDescription.{您的语言}.json",并且此语言在第 1 步提到的语言列表中,则新语言将在您启动游戏后显示。 您也可以将 "Force using this language" 配置设置为您的语言名称(不是完整文件名。在此示例中,您应将其设置为 "German")。然后此模组将忽略游戏语言并选择所选语言文件。

如何自定义物品详情?

自定义过程比 1+1 稍微复杂一些。 这并非旨在让每个人都能做到。而是为了让某人找到一个好的预设并分享他的成果。

1.reframework/data 中找到翻译文件。对于英文用户,它是 "BetterBetterItemDescription.English.json"。

2. 对于常见属性,您需要编辑 "FieldFormat" 下的内容。 以苹果为例,默认的额外消息是(安装了 AppleRestoreMaxHP mod):

Heal 80 HP./Heal 500 MAXHP.

因为苹果的 _HealWhiteHp_HealBlackHp 是 80/500。根据文件中的以下几行:

        "_HealBlackHp": "Heal %s MAXHP.",
        "_HealWhiteHp": "Heal %s HP.",

这两个属性就生成了。

如果您想显示 itemID,您需要在翻译文件中找到它:

"_Id": {
    "enable": false,
    "format": "Id %s.",
    "type": "String"
},

您会发现我已经为物品 ID 添加了一些内容。您只需启用它。 因此,如果您将其打开(将 "false" 修改为 "true"),您可以得到:

Id 1./Heal 80 HP./Heal 500 MAXHP.

如果您想要另一种格式,您可以编辑格式为:

"_Id": {
"enable": true,
"format": "This has an id of %s and lalala.",
"type": "String"
},

然后您会得到:

This has an id of 1 and lalala./Heal 80 HP./Heal 500 MAXHP.

3. 如果您在翻译文件中找不到它,您需要手动将其添加到翻译文件中。 所有可能的属性如下:

 --以下是通用参数
    _Id
    _SortNo
    _Category
    _Attr
    _ModelId
    _FieldModelId
    _IconNo
    _ItemDropId
    _Weight
    _BuyPrice
    _SellPrice
    _StackNum
    _Material
    _Worth
    _Favor
    _FavoriteAttr
    _AutoSellPrio
    _StolenPrio
    --以下是消耗品
    _SubCategory
    _UseEffect
    _Decay
    _DecayedItemId
    _HealWhiteHp
    _HealBlackHp
    _HealStamina
    _UseAttr
    _AddStatus
    _RemoveStatus
    _FakePrice
    _FakeItemId
    
    --以下是装备(武器/护甲/戒指共用)
    _EquipCategory
    _Lv
    _Series
    _Job
    
    --以下是武器
    _WeaponName
    _WeaponId
    _PhysicalAttack
    _SlashRate
    _StrikeRate
    _StrikeStore
    _MagicAttack
    _Element
    _ElementStore
    _Shake
    _Blow
    _StaminaReduce
    _ShakeGuard
    _BlowGuard
    _PoisonStore
    _SleepStore
    _SilentStore
    _StoneStore
    _WaterStore
    _OilStore
    --以下是护甲/戒指
    _StyleNo
    _PhysicalDefence
    _SlashDefenceRate
    _StrikeDefenceRate
    _MagicDefence
    _FireDefence
    _FireResist
    _IceDefence
    _IceResist
    _ThunderDefence
    _ThunderResist
    _LightDefence
    _DarkDefence
    _ShakeResistRate
    _BlowResistRate
    _PoisonResist
    _SleepResist
    _SilentResist
    _StoneResist
    _WaterResist
    _OilResist

如果您想为每个物品显示 "_StackNum",您可以添加以下文本:

"_StackNum": {
"enable": true,
"format": "This item's stack num is %s",
"type": "String"
},

或者您可以使用简写格式:

"_StackNum": "This item's stack num is %s",

然后您可以得到:

This has an id of 1 and lalala./This item's stack num is 99/Heal 80 HP./Heal 500 MAXHP.

4. 一些特殊属性,例如 _SubCategory。 它基本上是指物品类别的数字。但我们想显示真实的类别名称而不是数字。 然后您需要在文件中为每个数字设置正确的名称,例如:

          _SubCategory={enable=false,type="Enum",format="Cat %s",
                            map={[1]="Buff",
                            [2]="Material",
                            [3]="Special",
                            [4]="Quest",
                            [5]="Book",
                            [6]="Arrow",
                            [7]="CustomSkill",
                            [8]="PawnSkill",
                            [9]="MagicBook",
                            [10]="Online"}
    },

这意味着如果 _SubCategory 等于 1,则显示 "Cat Buff"。如果 _SubCategory 等于 2,则显示 "Cat Material",依此类推。