
更好的更好的物品描述 - 简单属性
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]
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。