更好的更好的物品描述 - 简单属性

更好的更好的物品描述 - 简单属性

xyzkljl1制作的优秀模组的可选附加组件,可简化并允许你配置不同装备上显示的属性。

描述


这是为 [b]xyzkljl1[/b] 的优秀模组制作的可选附加组件,可简化并自定义装备属性的显示方式。

我非常喜欢 xyzkljl1 的原始模组,但发现一次性解析基础值、强化值和加成值的组合数据有些繁琐,尤其是在快速对比装备时。为了解决这个问题,我制作了这个轻量级配套脚本,作为 DLC 附加组件使用。它与主模组无缝协作,因此 xyzkljl1 的原始设计完全不受影响,同时让玩家可以根据个人偏好自由调整 UI。

[center][youtube]rmZZTqcVDDA[/youtube][/center]

[color=#e69138][b]主要功能[/b][b]:[/b][/color]
[list]
[][b]原版 / 简洁模式:[/b]精简界面,仅显示最终总值,同时保留戒指、倍率及其他元素的数据附加功能。[/]
[][b]自定义基础值模式:[/b]显示装备的[b]纯出厂基础值[/b]。例如,如果你有一件从 90 基础值强化到 150 的装备,而你拾取了一件基础值为 100 的新装备,此模式可让你立即比较哪件物品的初始属性和成长潜力更优,而不会被强化等级干扰判断。[/]
[][b]可自定义标签:[/b]包含游戏内文本编辑器,可更改前缀。默认为
[code]Base[/code](例如
[code]320 (Base: 90)[/code]),但如果你喜欢更简洁的外观,可以留空,如
[code]320 (90)[/code]。[/
]
[][b]完整多语言支持:[/b]在 REFramework 菜单中集成了语言选择器,实时支持英语、西班牙语、日语、简体中文和葡萄牙语。[/]
[/list]安装说明
[list=1]
[]需要原始 [b][url=https://www.nexusmods.com/dragonsdogma2/mods/338?tab=description]Better Better Item Description[/url][/b] 模组及其所有前置条件。[/]
[]将
[code]BBID_SimpleStats.lua[/code]文件放入 REFramework 的 autorun 文件夹:
[code]...\Dragons Dogma 2\reframework\autorun\[/code](或通过 Fluffy Mod Manager 安装)。[/
]
[/list]致谢
[list]
[]非常感谢 [b][color=#e69138]xyzkljl1[/color][/b] 在核心模组上的出色工作。[/]
[]感谢 Capcom 带来这款出色的游戏。

[/
]
[/list][color=#e69138][b]附加修复 / 故障排除(可选)[/b][/color]
如果你最近在最新游戏补丁后遇到原始模组添加的文本重复显示的问题(这是基础模组的已知问题,与翻译或本附加组件无关),可以在等待作者官方更新期间,手动调整原始
[code]BetterBetterItemDescription.lua[/code]文件中受影响的代码片段来修复。

第 1 部分:

[color=#ffe599]local function GetOrAddItemDesc(originalMessage,storageData,equipFields)
    local itemCommonParam=storageData._ItemData
    local ability=storageData._Ability
    local enhance=storageData._Enhance
    local uncached=equipFields~=nil or itemCommonParam:get_IsEquip() and (ability.PhysicalParameter~=0 or ability.MagicParameter~=0
        or ability.BlowParameter~=0 or ability.WeightParameter~=0 or ability.Bonus~=0 or enhance._Num~=0)
    local Id=itemCommonParam._Id
    local text=nil
    if not uncached then text=ItemDescCache[Id] end
    if text==nil then
        local cleanedOriginal = RemoveLineBreaks(originalMessage)
        local appendtext=GetItemDetail(itemCommonParam,uncached and ability or nil,enhance,equipFields)
        if appendtext~="" then
            
            if cleanedOriginal:sub(-#appendtext) == appendtext then
                text = cleanedOriginal
            else
                text = string.format("%s\n%s", cleanedOriginal, appendtext)
            end
        else
            text = cleanedOriginal
        end
        if not uncached then
            ItemDescCache[Id]=text
            Log("Add Item Desc To Cache")
            Log(text)
        end
    end
    --can't cache managed_string ,causes crash
    return sdk.create_managed_string(text)
end[/color]



第 2 部分:

[color=#ffd966]local getStatusName=sdk.find_type_definition("app.GUIBase"):get_method("getStatusName")
for _,type in pairs({"app.ui060301_00","app.ui060401_00"}) do
    sdk.hook(
        sdk.find_type_definition(type):get_method("updateItemInfoDisp"),
        function (args)
            if not initialized then return end
            tmpEquipWindow=sdk.to_managed_object(args[2])
            tmpEquipNumbers=nil
        end,
        function ()
            if tmpEquipWindow~=nil then
                local numbers={}
                for id,field in pairs(equipStatusFields) do
                    numbers[getStatusName:call(nil,id)]=tmpEquipNumbers and tmpEquipNumbers[field]
                end
                local list=tmpEquipWindow.ItemDetail._StatusList
                local count=list.InfoList:get_Count()
                for i=0,count-1 do
                    local number=numbers[list.InfoList:get_Item(i).Name]
                    local item=list:call("getItem(System.Int32)",i)
                    if item~=nil then
                        local text=item.TxtVal
                        local size=text:get_RegionSize()
                        local width=56
                        local extra=tmpEquipNumbers~=nil and width3 or 0
                        size.w=width+extra
                        text:set_RegionSize(size)
                        local nameSize=item.TxtName:get_RegionSize()
                        nameSize.w=318-extra
                        item.TxtName:set_RegionSize(nameSize)
                        item.TxtName:set_AutoRegionFit(sdk.find_type_definition("via.gui.RegionFitType"):get_field(extra~=0 and "Both" or "Horizontal"):get_data())
                        -- Native ui01350901 positions. Right-anchored text expands left as its region widens.
                        local position=text:get_Position()
                        text:set_Position(Vector3f.new(478,position.y,position.z))
                        local compare=item.CompareControl:get_Position()
                        item.CompareControl:set_Position(Vector3f.new(0,compare.y,compare.z))
                        local left=item.TxtVal0:get_Position()
                        item.TxtVal0:set_Position(Vector3f.new(384-extra,left.y,left.z))
                        local arrow=GetCompareArrow(item)
                        if arrow~=nil then
                            local position=arrow:get_Position()
                            arrow:set_Position(Vector3f.new(406-extra,position.y,position.z))
                        end
                        text:set_AutoRegionFit(sdk.find_type_definition("via.gui.RegionFitType"):get_field(number~=nil and "Both" or "Horizontal"):get_data())
                       
                        
                        local currentMsg = text:get_Message()
                        currentMsg = string.gsub(currentMsg, "%s
%[.-%]", "")
                       
                        if number~=nil then
                            text:set_Message(currentMsg .. "[" .. number .. "]")
                        else
                            text:set_Message(currentMsg)
                        end
                    end
                end
            end
            tmpEquipWindow=nil
            tmpEquipNumbers=nil
        end
    )
end[/color]

[color=#d4d4d8]以及如果在 ReFramework 中收到 UI 错误时的另一部分。[/color]

[color=#ffd966]local dataFileInfo={type="author",name="Data file: Built-in##datafile"}
local _config={
    {type="author",version="2.0.2##version"},
    dataFileInfo,
    {name="specifyTransFile",type="string",default="",label="Force using this language(Need reset script)##lang"},
}[/color]