Помогите! Проверка на Уворот, Блок, Парирование

Открытый раздел для обсуждений
daleka
Сообщения: 46
Зарегистрирован: 26 ноя 2019, 18:39

Re: Помогите! Проверка на Уворот, Блок, Парирование

Сообщение daleka » 01 ноя 2022, 09:22

snutz писал(а):
01 ноя 2022, 02:45
Дружище! Фикс дф я один видел?

Первая часть сообщения была по поводу наворотов программы, собственно. Это мне даже лень комментировать честно...

Вторая часть сообщения, была адресована по поводу сообщения примера, а именно, если ты разуешь свои глазки, то ты увидишь, что выше по треду кидали ссылки, где есть конкретные примеры, что я собственно и подчеркнул, немного времени и проб и у тебя будет все готово. Но, опять же, мы будем сидеть тут и мусолить мои слова, место того, чтобы реально уловить суть моего месседжа и реализовать свое задуманное?

Или что нужно сделать? Скинуть тупо готовое решение? Это помощь? Я считаю иначе, толкнуть в правильном направлении, чтобы ты развивался, это то что нужно. Только я это сделал уже, тем, что сказал, что у вас есть все необходимое и примеры. Но, для тебя это высер ;)
Автор реально пропал больше двух лет назад. Последние фиксы делал EnterBrain, который является таким же пользователем как я и ты. Автор оставил доступ некоторым доверенным людям которые могут вносить фиксы в коробку.

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

Выше примеров нет. человек который никак не связан с программированием не поймет о чем речь в тех примерах.

И если ты знаешь как сделать, то скинь тупо готовое решение, не знаешь то не заходи в эту тему!

И просьба писать по теме не флудить! Учить и преподавать тут никому не нужно, тут сидят взрослые люди. Можешь помочь, - помоги. Не можешь проходи мимо!

daleka
Сообщения: 46
Зарегистрирован: 26 ноя 2019, 18:39

Re: Помогите! Проверка на Уворот, Блок, Парирование

Сообщение daleka » 02 ноя 2022, 02:10

После долгих ковыряний интернета удалось выдать такое:

function COMBAT_LOG_EVENT_UNFILTERED(...)
local subevent = ...
if subevent == "SWING_MISSED" then
missType = select(15, ...)
return true end
return false
end

Это все не работает, но и ошибки не выдает... Может кто направить на путь?
Вложения
изображение_viber_2022-11-01_01-37-48-940.png
изображение_viber_2022-11-01_01-37-48-940.png (4.16 КБ) 20691 просмотр

EnterBrain
Сообщения: 188
Зарегистрирован: 11 апр 2018, 09:29

Re: Помогите! Проверка на Уворот, Блок, Парирование

Сообщение EnterBrain » 03 ноя 2022, 05:45

daleka писал(а):
02 ноя 2022, 02:10
После долгих ковыряний интернета удалось выдать такое:

function COMBAT_LOG_EVENT_UNFILTERED(...)
local subevent = ...
if subevent == "SWING_MISSED" then
missType = select(15, ...)
return true end
return false
end

Это все не работает, но и ошибки не выдает... Может кто направить на путь?
Функция ваша выглядит странно, да и проверка в условии тоже, не вижу даже намёка на рабочую конструкцию.
Вообще, в зависимости от версии клиента код будет разный тут для обработки комбатлога. Что подходит например для лича, не будет подходить в актуале например. Советую начать с определения для чего именно надо и уже для него копать подходящий апи.
Discord:EnterBrain#6570

daleka
Сообщения: 46
Зарегистрирован: 26 ноя 2019, 18:39

Re: Помогите! Проверка на Уворот, Блок, Парирование

Сообщение daleka » 06 ноя 2022, 16:03

EnterBrain писал(а):
03 ноя 2022, 05:45
Функция ваша выглядит странно, да и проверка в условии тоже, не вижу даже намёка на рабочую конструкцию.
Вообще, в зависимости от версии клиента код будет разный тут для обработки комбатлога. Что подходит например для лича, не будет подходить в актуале например. Советую начать с определения для чего именно надо и уже для него копать подходящий апи.
Условие надо для WOTLK Classic. Отсутствовал несколько дней сейчас вернусь к поиску решения )

Trent
Сообщения: 10
Зарегистрирован: 30 окт 2022, 14:40

Re: Помогите! Проверка на Уворот, Блок, Парирование

Сообщение Trent » 07 ноя 2022, 19:32

Думаю решение нам не светит так как это сложная функция, а не простой пользовательский код... Что бы такое сотворить нужно быть программистом!

EnterBrain
Сообщения: 188
Зарегистрирован: 11 апр 2018, 09:29

Re: Помогите! Проверка на Уворот, Блок, Парирование

Сообщение EnterBrain » 20 ноя 2022, 21:05

daleka писал(а):
06 ноя 2022, 16:03
Условие надо для WOTLK Classic. Отсутствовал несколько дней сейчас вернусь к поиску решения )
С новой обновой добавились проверки
Изображение
Discord:EnterBrain#6570

daleka
Сообщения: 46
Зарегистрирован: 26 ноя 2019, 18:39

Re: Помогите! Проверка на Уворот, Блок, Парирование

Сообщение daleka » 21 ноя 2022, 17:47

EnterBrain писал(а):
20 ноя 2022, 21:05
daleka писал(а):
06 ноя 2022, 16:03
Условие надо для WOTLK Classic. Отсутствовал несколько дней сейчас вернусь к поиску решения )
С новой обновой добавились проверки
Изображение
Огромное спасибо...) Вообще считаю что в программу как-то вернуть донат, что бы люди которые хотят какую-то новую функцию могли скинутся и задонатить на нее... Либо вернуть абонплату как было раньше...

Trent
Сообщения: 10
Зарегистрирован: 30 окт 2022, 14:40

Re: Помогите! Проверка на Уворот, Блок, Парирование

Сообщение Trent » 20 фев 2023, 19:59

local f = CreateFrame("Frame")
f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
f:SetScript("OnEvent", function(self, event)
local timestamp, eventType, _, _, sourceName, _, _, _, destName, _, _, _, spellName, _, _, hitFlags = CombatLogGetCurrentEventInfo()

if destName == UnitName("player") then -- проверяем, является ли игрок целью события
if eventType == "SWING_MISSED" then -- если атака промахнулась
if bit.band(hitFlags, COMBATLOG_HITEFFECT_BLOCK) ~= nil then -- проверяем, был ли блок
print("Вы заблокировали атаку")
elseif bit.band(hitFlags, COMBATLOG_HITEFFECT_MISS) ~= nil then -- проверяем, был ли промах
print("Вы увернулись от атаки")
elseif bit.band(hitFlags, COMBATLOG_HITEFFECT_PARRY) ~= nil then -- проверяем, был ли парирован
print("Вы парировали атаку")
end
elseif eventType == "RANGE_MISSED" or eventType == "SPELL_MISSED" then -- если атака закончилась неудачей
local missType = select(15, CombatLogGetCurrentEventInfo()) -- получаем тип неудачи
if missType == "BLOCK" then -- проверяем, был ли блок
print("Вы заблокировали атаку")
elseif missType == "DODGE" then -- проверяем, был ли уклон
print("Вы увернулись от атаки")
elseif missType == "PARRY" then -- проверяем, был ли парирован
print("Вы парировали атаку")
end
end
end
end)

------------------------------------------

Этот код создает фрейм, который регистрирует событие COMBAT_LOG_EVENT_UNFILTERED для обработки комбат лога. Когда происходит событие, функция обработки проверяет, является ли целью игрок, и затем проверяет, произошло ли блокирование, уворот или парирование. Обратите внимание, что некоторые события могут быть опущены, если они не отображаются в комбат логе.

Убедитесь, что этот код находится в файле-аддоне и загружается в игру. Он также может потребовать дополнительных прав для чтения комбат лога, которые можно получить, используя функцию CombatLogClearEntries() во время инициализации аддона.

EnterBrain
Сообщения: 188
Зарегистрирован: 11 апр 2018, 09:29

Re: Помогите! Проверка на Уворот, Блок, Парирование

Сообщение EnterBrain » 21 фев 2023, 04:28

Trent писал(а):
20 фев 2023, 19:59
local f = CreateFrame("Frame")
f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
f:SetScript("OnEvent", function(self, event)
local timestamp, eventType, _, _, sourceName, _, _, _, destName, _, _, _, spellName, _, _, hitFlags = CombatLogGetCurrentEventInfo()

if destName == UnitName("player") then -- проверяем, является ли игрок целью события
if eventType == "SWING_MISSED" then -- если атака промахнулась
if bit.band(hitFlags, COMBATLOG_HITEFFECT_BLOCK) ~= nil then -- проверяем, был ли блок
print("Вы заблокировали атаку")
elseif bit.band(hitFlags, COMBATLOG_HITEFFECT_MISS) ~= nil then -- проверяем, был ли промах
print("Вы увернулись от атаки")
elseif bit.band(hitFlags, COMBATLOG_HITEFFECT_PARRY) ~= nil then -- проверяем, был ли парирован
print("Вы парировали атаку")
end
elseif eventType == "RANGE_MISSED" or eventType == "SPELL_MISSED" then -- если атака закончилась неудачей
local missType = select(15, CombatLogGetCurrentEventInfo()) -- получаем тип неудачи
if missType == "BLOCK" then -- проверяем, был ли блок
print("Вы заблокировали атаку")
elseif missType == "DODGE" then -- проверяем, был ли уклон
print("Вы увернулись от атаки")
elseif missType == "PARRY" then -- проверяем, был ли парирован
print("Вы парировали атаку")
end
end
end
end)

------------------------------------------

Этот код создает фрейм, который регистрирует событие COMBAT_LOG_EVENT_UNFILTERED для обработки комбат лога. Когда происходит событие, функция обработки проверяет, является ли целью игрок, и затем проверяет, произошло ли блокирование, уворот или парирование. Обратите внимание, что некоторые события могут быть опущены, если они не отображаются в комбат логе.

Убедитесь, что этот код находится в файле-аддоне и загружается в игру. Он также может потребовать дополнительных прав для чтения комбат лога, которые можно получить, используя функцию CombatLogClearEntries() во время инициализации аддона.
Эм, к чему это? Какие-то проблемы с функционалом "из коробки"?
Discord:EnterBrain#6570

Trent
Сообщения: 10
Зарегистрирован: 30 окт 2022, 14:40

Re: Помогите! Проверка на Уворот, Блок, Парирование

Сообщение Trent » 21 фев 2023, 13:55

EnterBrain писал(а):
21 фев 2023, 04:28
Trent писал(а):
20 фев 2023, 19:59
local f = CreateFrame("Frame")
f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
f:SetScript("OnEvent", function(self, event)
local timestamp, eventType, _, _, sourceName, _, _, _, destName, _, _, _, spellName, _, _, hitFlags = CombatLogGetCurrentEventInfo()

if destName == UnitName("player") then -- проверяем, является ли игрок целью события
if eventType == "SWING_MISSED" then -- если атака промахнулась
if bit.band(hitFlags, COMBATLOG_HITEFFECT_BLOCK) ~= nil then -- проверяем, был ли блок
print("Вы заблокировали атаку")
elseif bit.band(hitFlags, COMBATLOG_HITEFFECT_MISS) ~= nil then -- проверяем, был ли промах
print("Вы увернулись от атаки")
elseif bit.band(hitFlags, COMBATLOG_HITEFFECT_PARRY) ~= nil then -- проверяем, был ли парирован
print("Вы парировали атаку")
end
elseif eventType == "RANGE_MISSED" or eventType == "SPELL_MISSED" then -- если атака закончилась неудачей
local missType = select(15, CombatLogGetCurrentEventInfo()) -- получаем тип неудачи
if missType == "BLOCK" then -- проверяем, был ли блок
print("Вы заблокировали атаку")
elseif missType == "DODGE" then -- проверяем, был ли уклон
print("Вы увернулись от атаки")
elseif missType == "PARRY" then -- проверяем, был ли парирован
print("Вы парировали атаку")
end
end
end
end)

------------------------------------------

Этот код создает фрейм, который регистрирует событие COMBAT_LOG_EVENT_UNFILTERED для обработки комбат лога. Когда происходит событие, функция обработки проверяет, является ли целью игрок, и затем проверяет, произошло ли блокирование, уворот или парирование. Обратите внимание, что некоторые события могут быть опущены, если они не отображаются в комбат логе.

Убедитесь, что этот код находится в файле-аддоне и загружается в игру. Он также может потребовать дополнительных прав для чтения комбат лога, которые можно получить, используя функцию CombatLogClearEntries() во время инициализации аддона.
Эм, к чему это? Какие-то проблемы с функционалом "из коробки"?
Нет все отлично. Так кинул может кому пригодится...) Для всеобщего развития...

Ответить

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

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