WORLD OF WARCRAFT

Тема: Что не так со скриптом?  (Прочитано 4012 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Elokhim

  • Новичок
  • *
  • Сообщений: 33

  • Варкрафт: +
    • Имя: Дру
    • Класс: Дру
    • Сервер: Борейка
Что не так со скриптом?
« : 25 Июля, 2014, 16:36:47 »
  • Рейтинг:0 (+0 | 0)


function()
    local record = WA_CRC and WA_CRC["Rake"] and WA_CRC["Rake"][UnitGUID("target")]
    if(record) then
        return string.format("%i", (record.Agility * (1 + record.Mastery * 0.01)) or 0)
    else
        return "error"
    end
end

Аддон: WeakAuras

Ребят, помогите, не пойму что не так со скриптом, в иконке пишет ошибку, а не показывает величину доты!
Заранее спасибо!
« Последнее редактирование: 25 Июля, 2014, 19:43:41 by Elokhim »

rusangel

  • Завсегдатай
  • **
  • Сообщений: 402
  • Святая консерва!

  • Варкрафт: +
    • Имя: Найтквестт
    • Класс: Святая консерва!
    • Сервер: Дракономор
Re: Что не так со скриптом?
« Ответ #1 : 25 Июля, 2014, 17:47:13 »
  • Рейтинг:0 (+0 | 0)
function()
    local record = WA_CRC and WA_CRC["Rake"] and WA_CRC["Rake"][UnitGUID("target")]
    if(record) then
        return string.format("%i", (record.Agility * (1 + record.Mastery * 0.01)) or 0)
    else
        return "error"
    end
end

Ребят, помогите, не пойму что не так со скриптом, в иконке пишет ошибку, а не показывает величину доты!
Заранее спасибо!

я конечно не профи, но первое что мне бросается в глаза, где у тебя объявлена WA_CRC?? Если нигде, то что делает твоя функция?

Elokhim

  • Новичок
  • *
  • Сообщений: 33

  • Варкрафт: +
    • Имя: Дру
    • Класс: Дру
    • Сервер: Борейка
Re: Что не так со скриптом?
« Ответ #2 : 25 Июля, 2014, 18:00:08 »
  • Рейтинг:0 (+0 | 0)
Спасибо за участие для начала!
Я в этом НИЧЕГО не понимаю, к сожалению(
Этот скрипт нормально работает на английском клиенте игры, на русском же пишет ошибку.
Я надеюсь, что кто-нибудь поможет ее исправить.

Иконка висит, время дэбафа показывает, а вот силу доты нет, вместо нее пишет "error"

Не судите строго, никогда не сталкивался с программированием. 

Fallen

  • Старожил
  • ***
  • Сообщений: 3569
  • Cнова в деле...

  • Варкрафт: +
    • Имя: Мнементор
    • Класс: ДХ
    • Сервер: Гордуни (EU)
Re: Что не так со скриптом?
« Ответ #3 : 25 Июля, 2014, 18:03:19 »
  • Рейтинг:0 (+0 | 0)
Ну так поменяй все названия  (рейк, аджилити, мастери) на русские аналоги.

bulge

  • Старожил
  • ***
  • Сообщений: 1268

  • Варкрафт: +
    • Класс: Маг
Re: Что не так со скриптом?
« Ответ #4 : 25 Июля, 2014, 18:08:37 »
  • Рейтинг:0 (+0 | 0)
Ну так поменяй все названия  (рейк, аджилити, мастери) на русские аналоги.

Только "рейк" необходимо поменять.

Elokhim

  • Новичок
  • *
  • Сообщений: 33

  • Варкрафт: +
    • Имя: Дру
    • Класс: Дру
    • Сервер: Борейка
Re: Что не так со скриптом?
« Ответ #5 : 25 Июля, 2014, 18:11:40 »
  • Рейтинг:0 (+0 | 0)
менял, не помогает(
можно даже не менять на русский абилки, в настройках иконки просто написать название эффекта.
« Последнее редактирование: 25 Июля, 2014, 18:15:10 by Elokhim »

Altomare

  • Завсегдатай
  • **
  • Сообщений: 306

  • Варкрафт: +
    • Имя: Левантиец
    • Класс: Паладин
    • Сервер: Свежеватель Душ
Re: Что не так со скриптом?
« Ответ #6 : 25 Июля, 2014, 19:07:41 »
  • Рейтинг:0 (+0 | 0)
А что массив такой WA_CRC кто-нибудь в курсе? Это дефолтный?

Моррореанн

  • Завсегдатай
  • **
  • Сообщений: 372
  • (x_(x(O_O)x)_x)

  • Варкрафт: +
    • Имя: Харореанн
    • Класс: Холипал
    • Сервер: Вечная Песня
Re: Что не так со скриптом?
« Ответ #7 : 25 Июля, 2014, 20:32:15 »
  • Рейтинг:0 (+0 | 0)
Гугль говорит, что это custom function для WA.
Посему таки предлагаю это в топике WA спрашивать.
Terrible hamster justice shall be wreaked upon you!
Посмотрите на свои руки.... Задумайтесь над нелепостью их строения.

Elokhim

  • Новичок
  • *
  • Сообщений: 33

  • Варкрафт: +
    • Имя: Дру
    • Класс: Дру
    • Сервер: Борейка
Re: Что не так со скриптом?
« Ответ #8 : 25 Июля, 2014, 20:40:08 »
  • Рейтинг:0 (+0 | 0)
пролистал весь топик с WA, такие темы там вообще не поднимаются...тут вопрос к знатокам данного языка программирования и выявлении ошибок

ykiigor

  • Завсегдатай
  • **
  • Сообщений: 536

  • Варкрафт: +
    • Имя: Аффиа
Re: Что не так со скриптом?
« Ответ #9 : 25 Июля, 2014, 21:20:39 »
  • Рейтинг:0 (+0 | 0)
Тут нет никакой ошибки. Просто кто-то пытается найти ошибку там, где её нет.
WA_CRC["Rake"][UnitGUID("target")] создается или перезаписывается во время триггера. Нужно было линковать код этого самого триггера. Ошибка там
Секунда гугла и я нашел видимо локовский пример триггера
Цитировать
function(_,_,message,_,_source,_,destGUID,_,_,_,spell)
  if(message == "SPELL_AURA_APPLIED" and UnitIsUnit(source or "", "player") and spell == "Corruption") then
    WA_CRC = WA_CRC or {};
    WA_CRC.Corruption = WA_CRC.Corruption or {};
    WA_CRC.Corruption[destGUID] = WA_CRC.Corruption[destGUID] or {};
    local record = WA_CRC.Corruption[destGUID]
    record.Mastery = GetMastery();
    record.Haste = GetRangedHaste();
    record.Crit = GetSpellCritChance();
    record.SpellPower = GetSpellBonusDamage(6);
  end
end
Для кота вероятно строчка с искомой нам ошибкой выглядит так
Цитировать
if(message == "SPELL_AURA_APPLIED" and UnitIsUnit(source or "", "player") and spell == "Rake") then
Скрипт проверяется не по ID заклинания, а по его названию. Из-за этого прекрасно работает на англ клиенте и не работает на ру клиенте.
Итог. Поменять "Rake" на "Глубокая рана" в одной строчке в триггере и радоваться.

P.S. Я никогда не пользовался WA

Elokhim

  • Новичок
  • *
  • Сообщений: 33

  • Варкрафт: +
    • Имя: Дру
    • Класс: Дру
    • Сервер: Борейка
Re: Что не так со скриптом?
« Ответ #10 : 26 Июля, 2014, 00:41:23 »
  • Рейтинг:0 (+0 | 0)
Спасибо за участие и за подробное описание решения, но если я правильно понял, то в триггере я поменял на русский язык, но ошибку так и выдает. Или нужно менять где-то в другом месте?
Если я не прав, то подскажите как именно менять это в триггере!
Вот как я поменял в триггере, изначально там было по английски написана абилка, сейчас вот так:
https://yadi.sk/i/lRXQDC0sXTn5B

А вот как выглядит сам скрипт:
https://yadi.sk/i/D8vZbjCkXTtq5
На самом деле нет разницы в самом скрипте на каком языке писать название заклинания, он ошибку бы выдал.

Сам не рад что залез в эти дебри, но правда оч удобное отображение доты и ее силы на цели. Может есть другой, более простой вариант вывести это значение, может аддон какой посоветуете?
« Последнее редактирование: 26 Июля, 2014, 01:17:48 by Elokhim »

ykiigor

  • Завсегдатай
  • **
  • Сообщений: 536

  • Варкрафт: +
    • Имя: Аффиа
Re: Что не так со скриптом?
« Ответ #11 : 26 Июля, 2014, 01:43:17 »
  • Рейтинг:0 (+0 | 0)
(показать/скрыть)
Не следовало удалять ZZConfig для начала. В нем нужно было заменить англ названия на русские и судя по функции там, то в ZZRake и ZZRip тоже тогда нужно поменять на русские.

Elokhim

  • Новичок
  • *
  • Сообщений: 33

  • Варкрафт: +
    • Имя: Дру
    • Класс: Дру
    • Сервер: Борейка
Re: Что не так со скриптом?
« Ответ #12 : 26 Июля, 2014, 01:59:31 »
  • Рейтинг:0 (+0 | 0)
Вот что есть в триггере ZZConfig, он кстати корректно работает даже до замены на русский:
а какая связь ZZConfig с этими двумя иконками, которые так и не заработали((
function(event, timestamp, msg, hideCaster, sourceGUID, sourceName, sourceFlags, sourceFlags2, destGUID, destName, destFlags, destFlags2, ...)
    -- Run through Buffs
    WA_MULTIPLIER = 1.0
    local buffs, i = {}, 1
    buffs[127538] = 1.4 -- Savage Roar
    buffs[5217] = 1.15 -- Tigers Fury
    buffs[145152] = 1.30 -- Dream of Cenarius
    --buffs[1126] = 2.39 -- MotW
    local buffID = select(11, UnitBuff("player", i))
    while buffID do
        -- Do stuff
        if buffs[ buffID ] then
            WA_MULTIPLIER = WA_MULTIPLIER * buffs[ buffID ]
        end
        -- Update indices
        i = i + 1;
        buffID = select(11, UnitBuff("player", i))
    end
   
    local spellId, spellName, spellSchool, auraType = ...
    if(sourceName == UnitName("player")
        and (msg == "SPELL_CAST_SUCCESS")
        and (spellName == "Разорвать" or spellName == "Глубокая рана" or spellName == "Взбучка")
    ) then
        WA_CRC = WA_CRC or {}
        WA_CRC[spellName] = WA_CRC[spellName] or {}
        WA_CRC[spellName][destGUID] = WA_CRC[spellName][destGUID] or {}
        local record = WA_CRC[spellName][destGUID]
        record.Mastery = GetMastery() * 3.125
        record.Agility = select(1, UnitAttackPower("player")) * WA_MULTIPLIER * 0.312
        -- if UnitBuff("player", "Savage Roar") then record.Agility = record.Agility * 1.3 end
        -- if UnitBuff("player", "Tiger's Fury") then record.Agility = record.Agility * 1.15 end
        -- if Unitbuff("player", 108381) then record.Agility =  record.Agility * 1.25 end
    end
    return true
end

Elokhim

  • Новичок
  • *
  • Сообщений: 33

  • Варкрафт: +
    • Имя: Дру
    • Класс: Дру
    • Сервер: Борейка
Re: Что не так со скриптом?
« Ответ #13 : 26 Июля, 2014, 02:12:42 »
  • Рейтинг:0 (+0 | 0)
На вопрос "а какая связь ZZConfig с этими двумя иконками" можно не отвечать.
Я поправил все на русский и ЗАРАБОТАЛО!!!

ykiigor, огромное тебе человеческое спасибо!!!

rusangel

  • Завсегдатай
  • **
  • Сообщений: 402
  • Святая консерва!

  • Варкрафт: +
    • Имя: Найтквестт
    • Класс: Святая консерва!
    • Сервер: Дракономор
Re: Что не так со скриптом?
« Ответ #14 : 26 Июля, 2014, 03:08:33 »
  • Рейтинг:0 (+0 | 0)
Вот что есть в триггере ZZConfig, он кстати корректно работает даже до замены на русский:
а какая связь ZZConfig с этими двумя иконками, которые так и не заработали((
function(event, timestamp, msg, hideCaster, sourceGUID, sourceName, sourceFlags, sourceFlags2, destGUID, destName, destFlags, destFlags2, ...)
    -- Run through Buffs
    WA_MULTIPLIER = 1.0
    local buffs, i = {}, 1
    buffs[127538] = 1.4 -- Savage Roar
    buffs[5217] = 1.15 -- Tigers Fury
    buffs[145152] = 1.30 -- Dream of Cenarius
    --buffs[1126] = 2.39 -- MotW
    local buffID = select(11, UnitBuff("player", i))
    while buffID do
        -- Do stuff
        if buffs[ buffID ] then
            WA_MULTIPLIER = WA_MULTIPLIER * buffs[ buffID ]
        end
        -- Update indices
        i = i + 1;
        buffID = select(11, UnitBuff("player", i))
    end
   
    local spellId, spellName, spellSchool, auraType = ...
    if(sourceName == UnitName("player")
        and (msg == "SPELL_CAST_SUCCESS")
        and (spellName == "Разорвать" or spellName == "Глубокая рана" or spellName == "Взбучка")
    ) then
        WA_CRC = WA_CRC or {}
        WA_CRC[spellName] = WA_CRC[spellName] or {}
        WA_CRC[spellName][destGUID] = WA_CRC[spellName][destGUID] or {}
        local record = WA_CRC[spellName][destGUID]
        record.Mastery = GetMastery() * 3.125
        record.Agility = select(1, UnitAttackPower("player")) * WA_MULTIPLIER * 0.312
        -- if UnitBuff("player", "Savage Roar") then record.Agility = record.Agility * 1.3 end
        -- if UnitBuff("player", "Tiger's Fury") then record.Agility = record.Agility * 1.15 end
        -- if Unitbuff("player", 108381) then record.Agility =  record.Agility * 1.25 end
    end
    return true
end

На сколько я понимаю язык ЛУА и конкретно ВикАуру - то объявление переменных = глобальное. Соответственно и вызов переменных - глобальный.

А ты выдрал кусок кода и не понимал, почему он не работает. Я не просто так тебя с самого начала спрашивал о том, что в коде значит WA_CRC и откуда ты берёшь для него значения.

Ну да ладно, на будущее, лучше более подробно описывать, что ты хочешь получить, где ты что нашел и что ты и как пытался  сделать, а не выдавать информацию порциями.

 

закрыть