TWW (fix)

noname123
Сообщения: 193
Зарегистрирован: 19 мар 2020, 09:15

TWW (fix)

Сообщение noname123 » 12 окт 2024, 11:42

Получилось реанимировать бота под TWW, но из-за того что при сохранении сборки бот генерирует каждый раз свой код, то придётся вносить изменения после этого самостоятельно.

Если вкратце, то нужно будет сохранить свою сборку, в файле AddOns\BlackDPS\Main.lua заменить часть кода и записать свои ID спеллов из сборки чтобы бот мог бинды на них поставить и нажимать соответственно.

Теперь по порядку...
1. Создаём свою сборку(с заклинаниями), меняем в настройках бота "Режим работы через аддон BPDS" и сохраняем её. Это нужно чтобы обновился файл Main.lua с вашей составленной ротацией. После этого (если необходимо) можно сразу режим работы вернуть на TellMeWhen и сохранить ещё раз.
2. Открываем файл AddOns\BlackDPS\Main.lua и спускаемся в самый низ. Там вы найдёте строчку SpellSelector() в ней записана ваша сгенерированная ротация, всё что находится выше этой функции нужно выделить и заменить на подкорректированный код для TWW который можно скачать тут https://cloud.mail.ru/public/GNYt/ChUGGuQnW (открываем файл в ссылке и копируем всё до SpellSelector() в свой Main.lua с заменой)
3. Найдите строчку с названием "local BindingSpells =" и двумя строчками ниже запишите свои ID спеллов через запятую которые присутствуют в вашей сборке.
Если есть в сборке макросы, то чуть ниже будет "local BindingMacroses = " и там по аналогии. В файле рядом с этими строчками есть небольшие подсказки.
4. Сохраняем файл и можно заходить в игру.

Выглядит на первый взгляд немного заморочено, но это не нужно будет делать в полном объёме каждый раз. Просто сохраните копию этого файла где вы уже вписали свои ID спеллов и т.д. и в дальнейшем при добавлении новых условий, после сохранения сборки вы будете просто заменять часть кода до SpellSelector() на свой и сразу пользоваться.

eminsk
Сообщения: 287
Зарегистрирован: 19 фев 2016, 17:15

Re: TWW (fix)

Сообщение eminsk » 13 окт 2024, 16:10

noname123 писал(а):
12 окт 2024, 11:42
Если вкратце, то нужно будет сохранить свою сборку, в файле AddOns\BlackDPS\Main.lua заменить часть кода и записать свои ID спеллов из сборки чтобы бот мог бинды на них поставить и нажимать соответственно.
Это для пиратки раз если будете использовать в актуале может прилететь бан просто.

Менять нужно снипах в настройке аддона TellMeWhen в папке клиента вов WTF для TWW как раз ...

cerunn
Сообщения: 10
Зарегистрирован: 14 окт 2024, 07:56

Re: TWW (fix)

Сообщение cerunn » 31 окт 2024, 04:54

когда заработает то на оффе.

eminsk
Сообщения: 287
Зарегистрирован: 19 фев 2016, 17:15

Re: TWW (fix)

Сообщение eminsk » 01 ноя 2024, 11:07

cerunn писал(а):
31 окт 2024, 04:54
когда заработает то на оффе.
Либо дождаться официальных фиксов а пока используй временный который был сделан выше в этой теме

cerunn
Сообщения: 10
Зарегистрирован: 14 окт 2024, 07:56

Re: TWW (fix)

Сообщение cerunn » 02 ноя 2024, 08:39

ну который только через блекдпс работает?чтоб через тмв работал я не понял как сделать.и когда я запускаю через блекдпс ошибка выскакивает после релога вроде все норм работает.

Xen1
Сообщения: 6
Зарегистрирован: 02 ноя 2024, 22:05

Re: TWW (fix)

Сообщение Xen1 » 02 ноя 2024, 22:11

Добавляем это в Пользовательский код (снизу) для совместимости с TWW. И продолжаем пользоваться TMW :)
Не гарантирую что работает для всех сборок.
Все способности полученые из талантов нужно обернуть в условие Активный талант (idTip в помощь).

Код: Выделить всё

PlayerHeroTrees = {}
function UpdateTalents()
    PlayerTalents = {}
    PlayerHeroTrees = {}

    local ActiveConfigID = C_ClassTalents.GetActiveConfigID()

    if ActiveConfigID then
        local ConfigInfo = C_Traits.GetConfigInfo(ActiveConfigID)

        if ConfigInfo then
            local treeIDs = ConfigInfo.treeIDs

            if treeIDs then
                for idx = 1, #treeIDs do
                    for _, TreeNodeID in pairs(C_Traits.GetTreeNodes(treeIDs[idx])) do
                        local NodeInfo = C_Traits.GetNodeInfo(ActiveConfigID, TreeNodeID)

                        if NodeInfo and NodeInfo.activeEntry and NodeInfo.activeRank > 0 then
                            local EntryInfo = C_Traits.GetEntryInfo(ActiveConfigID, NodeInfo.activeEntry.entryID)

                            if EntryInfo.definitionID then
                                local spellID = C_Traits.GetDefinitionInfo(EntryInfo.definitionID).spellID

                                PlayerTalents[tostring(spellID)] = true
                            end
                        end

                        if NodeInfo and NodeInfo.subTreeID then
                            local SubTreeInfo = C_Traits.GetSubTreeInfo(ActiveConfigID, NodeInfo.subTreeID)

                            if SubTreeInfo and SubTreeInfo.isActive then
                                PlayerHeroTrees[SubTreeInfo.name] = true
                            end
                        end
                    end
                end
            end
        end
    end

    for _, talentID in ipairs(C_SpecializationInfo.GetAllSelectedPvpTalentIDs()) do
        local _, _, _, _, _, spellID = GetPvpTalentInfoByID(talentID)

        PlayerTalents[tostring(spellID)] = true
        PlayerTalents[spellID] = true
    end
end

function IsHeroTree(TreeName)
    if PlayerHeroTrees[TreeName] ~= nil then
        return PlayerHeroTrees[TreeName]
    else
        return false
    end
end

function MyIsSpellInRange(SpellName, Unit)
    local in_range = C_Spell.IsSpellInRange(SpellName, Unit)

    if in_range == nil then return true else return in_range end
end

function CanCastUnit(SpellCode, Unit, InMove)
    return UnitExists(Unit) and UnitIsVisible(Unit) and not UnitIsDeadOrGhost(Unit) and Timers["WallBlock" .. UnitGUID(Unit)] == nil and Timers["UnitNotInFront" .. UnitGUID(Unit)] == nil and MyIsSpellInRange(SpellCode, Unit) and CanCast(SpellCode, InMove)
end

function GetSpellInfo(spellIdentifier)
    local data = C_Spell.GetSpellInfo(spellIdentifier)

    if data ~= nil then
        return data.name, 0, data.iconID, data.castTime, data.minRange, data.maxRange, data.spellID, data.originalIconID
    end
end

function GetSpellCooldown(spellIdentifier)
    local data = C_Spell.GetSpellCooldown(spellIdentifier)

    if data ~= nil then
        return data.startTime, data.duration, data.isEnabled, data.modRate
    end
end

function GetItemCooldown(spellIdentifier)
    local data = C_Item.GetItemCooldown(spellIdentifier)

    if data ~= nil then
        return data.startTime, data.duration, data.isEnabled, data.modRate
    end
end

function GetSpellCharges(spellIdentifier)
    local data = C_Spell.GetSpellCharges(spellIdentifier)

    if data ~= nil then
        return data.currentCharges, data.maxCharges, data.cooldownStartTime, data.cooldownDuration, data.chargeModRate
    end
end

function GetSpellDescription(spellIdentifier)
    return C_Spell.GetSpellDescription(spellIdentifier)
end

function IsSpellInRange(spellIdentifier, unit)
    return C_Spell.IsSpellInRange(spellIdentifier, unit)
end

function IsUsableSpell(spellIdentifier)
    return C_Spell.IsSpellUsable(spellIdentifier)
end

function GetSpellCount(spellIdentifier)
    return C_Spell.GetSpellCastCount(spellIdentifier)
end

function IsCurrentSpell(spellIdentifier)
    return C_Spell.IsCurrentSpell(spellIdentifier)
end

function GetSpellPowerCost(spellIdentifier)
    return C_Spell.GetSpellPowerCost(spellIdentifier)
end

function UnitAura(unit, i, kind)
    if kind == "HARMFUL" then
        local data = C_UnitAuras.GetDebuffDataByIndex(unit, i)

        if data ~= nil then
            return data.name, data.icon, data.applications, data.dispelName, data.duration, data.expirationTime, data.sourceUnit, nil, nil, data.spellId, data.canApplyAura, data.isBossDebuff, data.isFromPlayerOrPlayerPet
        end
    end

    if kind == "HELPFUL" then
        local data = C_UnitAuras.GetBuffDataByIndex(unit, i)

        if data ~= nil then
            return data.name, data.icon, data.applications, data.dispelName, data.duration, data.expirationTime, data.sourceUnit, nil, nil, data.spellId, data.canApplyAura, data.isBossDebuff, data.isFromPlayerOrPlayerPet
        end
    end
end

splintmaster
Сообщения: 41
Зарегистрирован: 01 фев 2023, 11:02

Re: TWW (fix)

Сообщение splintmaster » 03 ноя 2024, 10:14

Прогресс виден, но скилы не нажимает.

Xen1
Сообщения: 6
Зарегистрирован: 02 ноя 2024, 22:05

Re: TWW (fix)

Сообщение Xen1 » 03 ноя 2024, 18:53

Перепроверил. Свеже созданная сборка в фиксом для совместимости работает как и должна. Так что проблема не в API TWW.

splintmaster
Сообщения: 41
Зарегистрирован: 01 фев 2023, 11:02

Re: TWW (fix)

Сообщение splintmaster » 03 ноя 2024, 19:02

Пишет название скила который нужно нажать но не нажимает его.
По настройкам все проверил, сбросил по умолчанию, переклацал разные варианты... не помогло.

Xen1
Сообщения: 6
Зарегистрирован: 02 ноя 2024, 22:05

Re: TWW (fix)

Сообщение Xen1 » 03 ноя 2024, 19:37

Возьми в фокус цель каторую пишет рядом со спелом и отпиши о результате, плиз.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость