【问题标题】:WoW Lua - How to get the spell rank in 1.13 (Classic)WoW Lua - 如何在 1.13 (Classic) 中获得法术等级
【发布时间】:2019-12-31 02:39:13
【问题描述】:

我正在尝试获取法术的等级,但 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】:

    它们只是不同的咒语。对于某些我们倾向于将它们视为同一咒语的不同等级的事物来说,这会让人感到尴尬。

    作为插件提供的整体服务的一部分,您可能必须创建排名法术的数据库并在自己的表中进行查找。

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

    rank (string) - 来自法术工具提示的等级线,例如“排名 2”。返回一些其他分类(如“召唤”用于召唤 spell) 或空字符串(如果没有排名)。

    因此,如果他们想为该咒语添加一个,那么“排名”仅用于在 UI 中显示额外的行。

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

    local subTextOrRank = GetSpellSubtext(spellId)
    

    这将获取新引擎可能不会返回的等级显示行以及拼写信息。如果拼写是否缓存在客户端上,“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 表,结合这些表和滚动一个小型数据库可能会为您打破日志堵塞。

    【讨论】:

    • 非常感谢您的回答!我想我可能会通过使用GetSpellBookItemName 逃脱,因为我正在处理一个丢弃事件我有可用的法术书插槽 ID,GetSpellBookItemName 将返回spellSubName 中的法术等级。
    猜你喜欢
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多