WoW Lua-如何在1.13(经典)中获得咒语等级

问题描述 投票:0回答:1

我正在尝试获取咒语的等级,但是GetSpellInfo不会返回第二个参数(等级)。如果我运行:

/dump GetSpellInfo( 5782 )

我知道

[1]="Fear"
[3]="136813"
[4]="1500"
[5]="0"
[6]="20"
[7]="5782"

每个咒语和等级组合似乎都有一个唯一的ID:

5185 = Healing Touch (rank1)
5186 = Healing Touch (rank2)
5187 = Healing Touch (rank3)
5188 = Healing Touch (rank4)
5189 = Healing Touch (rank5)
6778 = Healing Touch (rank6)
8903 = Healing Touch (rank7)
9758 = Healing Touch (rank8)

如何获得具有ID的法术等级?

我正在开发的模组(LunarSphere)从咒语书中受到了拖累。

我正在通过SetAttribute按钮使用它:

self:SetAttribute("*spell-S01", "Healing Touch")

最高级别或

self:SetAttribute("*spell-S01", "Healing Touch(rank 3)")

针对特定等级

谢谢!

lua world-of-warcraft
1个回答
0
投票

它们只是不同的咒语。对于某些事物,当我们倾向于将它们视为同一法术的不同等级时,它会变得尴尬。

您可能必须制作一个已排序法术的数据库,并在自己的表中进行查找,作为附加组件提供的整体服务的一部分。

https://wowwiki.fandom.com/wiki/API_GetSpellInfo

rank(string)-咒语工具提示中的等级行,例如“等级2”。返回其他分类(例如“召唤”进行召唤)拼写);如果没有等级,则为空字符串。

因此,“排名”仅用于在用户界面中显示多余的行,如果他们想为该咒语添加一行。

[就像UI API中的许多东西一样,它们只是在支持UI的地方,而且大多是实用的,而这是显示或执行WoW UI功能所必需的。

'GetSpellSubtext'可能会或可能不会返回排名文本,无论该咒语是否缓存在客户端上,或者您最终都会看到它每次都起作用。

过去我曾使用此咒语列表作为快速参考:

http://kyle.13th-floor.org/wow/spells/spells_2_4_0.txt

用于回答有关客户端静态可用数据的许多问题:

https://wow.tools/dbc/

这是《魔兽世界》当前版本的客户端SpellName表的示例:

https://wow.tools/dbc/?dbc=spellname&build=1.13.3.32836#search=&page=1

这是来自同一《魔兽世界》经典版本的“咒语”表:

https://wow.tools/dbc/?dbc=spell&build=1.13.3.32836#search=&page=1

ID, NameSubtext_lang, Description_lang, AuraDescription_lang
1
3
4
5, , Instantly Kills the target. I hope you feel good about yourself now.....
7
10, Rank 1, Ice shards pelt the target area doing $o1 Frost damage over $d.
11

[您在这里可以看到他们从字面上构成了一张显示UI所需的表,并且没有比这更复杂或更深的表。

并且,如果您阅读了该列表,则可以看到或想象它基本上是手工完成的,因此可能有错误,或者可能包含有助于排名描述字段但破坏一致性的文本。重要的是要注意,如果您出于编程目的而依赖表字符串字段,则需要了解这些信息并向其中添加例外以进行等级测试。


您可以尝试在加载时滚动查看咒语列表并快速建立排名列表,但请注意,该表中有21,000个咒语。如果您只担心玩家的咒语,则可以制作一个迷你的预建列表,以列表的形式存储在自己的插件中,而该列表只有数百个。您可以具有基本的英文名称以及用于排名的“最小”和“最大”字段。

我认为在循环中使用'GetSpellSubtext'吐出本地客户端上的Lua表,并与表结合并滚动一个小的DB可能会为您解决日志阻塞的问题。

© www.soinside.com 2019 - 2024. All rights reserved.