Уничтожение тотемов
Уничтожение тотемов
Всем привет! Можно ли как-то сделать чтобы бот отслеживал тотемы цели arena 1 и если цель установила например тотем контрудара чтобы бот автоматом выбирал его в качестве цели? Так же интересует можно ли добавить отслеживание находится ли игрок в группе или нет.
Re: Уничтожение тотемов
Привет. А по дебафу тотема контрудара от arena1 отслеживать не получается ?FoeReaper писал(а): ↑06 мар 2024, 16:18Всем привет! Можно ли как-то сделать чтобы бот отслеживал тотемы цели arena 1 и если цель установила например тотем контрудара чтобы бот автоматом выбирал его в качестве цели? Так же интересует можно ли добавить отслеживание находится ли игрок в группе или нет.
Есть вариант отслеживать через наличие нэймплэйта на экране с конкретным именем, в данном случае "Тотем контрудара". И в радиусе действия твоего атакующего спелла.
p.s. в блоке c CheckTotemInSpellRange(8921) заменить 8921 на ID своего атакующего спелла для проверки рэнджи доступной для атаки.
Код: Выделить всё
function CheckTotemInSpellRange(spellid)
local UnitsInRange = 0
for i = 1,40 do
if UnitExists("nameplate"..i) then
if MyIsSpellInRange(spellid, "nameplate"..i) == 1 and UnitCanAttack("player", "nameplate"..i) == true and UnitName("nameplate"..i) == "Тотем контрудара" then
UnitsInRange = UnitsInRange + 1
end
end
end
return UnitsInRange
end
Re: Уничтожение тотемов
изначально вся проблема в том что начиная с лк таргетить тотемы макросом /target тотем нельзя. Но я уверен что должны быть еще варианты
Re: Уничтожение тотемов
Понял тебя. Ну из доступных (не запрещенных) вариантов в таком случае остаётся перебор таргетов через таб или атака по маусоверу.
В моём втором варианте если заменить "/target Тотем контрудара" на /targetenemy то при появлении тотема должен начаться спам кнопки таб пока в цель не попадёт тотем. Со стороны палевно наверно будет выглядеть, но сомневаюсь что есть другой легальный способ.
В моём втором варианте если заменить "/target Тотем контрудара" на /targetenemy то при появлении тотема должен начаться спам кнопки таб пока в цель не попадёт тотем. Со стороны палевно наверно будет выглядеть, но сомневаюсь что есть другой легальный способ.
Re: Уничтожение тотемов
Спасибо, ну я лучше тоже ничего не придумал, прост был опыт использования софта AimSharp и там какимт образом было это настроенно, тотемы сразу берутся в таргет автоматом без спама Табом, увы вскрыть и посмотреть нельзя, ротации там с закрытыми исходниками. Ну ладно этот вопрос можно опустить пока что, сейчас я немного изменил код чтобы можно было в нем прописать любой тотем, изначально я хотел сделать список тотемов и чтобы он выбирал тотемы по приоритету я не придумал ничего лучше как продублировать код для каждого тотема отдельно и в условиях упорядочить их по приоритетам исключениями. Есть идеи как это сделать более лаконично? А то мне мозгов не хватает:(. Спасибо еще раз что отозвался по мочь, мое дело хоть с мертвой точки сдвинулось:)
Re: Уничтожение тотемов
Может там анлокер встроенный был по дефолту, странно довольно.
т.е. ты хочешь чтобы в одном коде у тебя было прописано несколько тотемов которые будут возвращать true при наличии их на экране ?
Немного доработал идею с перебором таргетов, чтобы не выглядело палевно.
Смысл в том что будет запускаться макрос команда (в данном случае она у меня названа "AAA") и она будет действовать случайное количество времени (у меня выставлено 0.2-0.4) когда это время будет заканчиваться, то прога будет табать макросом и по новой запускать случайный таймер до следующего нажатия 0.2-0.4с. И так будет пока в цель не возьмётся тотем с указанным именем.
В этой строке кода можно задержку под себя изменить Timers['CMD_AAA'] = math.random(2,4)/10
т.е. ты хочешь чтобы в одном коде у тебя было прописано несколько тотемов которые будут возвращать true при наличии их на экране ?
Немного доработал идею с перебором таргетов, чтобы не выглядело палевно.
Код: Выделить всё
function CheckTotemInSpellRange(spellid)
local UnitsInRange = 0
for i = 1,40 do
if UnitExists("nameplate"..i) then
if MyIsSpellInRange(spellid, "nameplate"..i) == 1 and UnitCanAttack("player", "nameplate"..i) == true and UnitName("nameplate"..i) == "Тотем контрудара" then
UnitsInRange = UnitsInRange + 1
if ((Timers['CMD_AAA'] ~= nil) and 1 or 0) == 0 then
Timers['CMD_AAA'] = math.random(2,4)/10
end
end
end
end
return UnitsInRange
end
В этой строке кода можно задержку под себя изменить Timers['CMD_AAA'] = math.random(2,4)/10
Re: Уничтожение тотемов
Ты правильно понял что я хотел в общем, я сидел думал думал и придумал
только вот прикол с макросом у тебя в коде я не понял как им пользоваться
Код: Выделить всё
function CheckTotemInSpellRange(spellid, totemName)
local UnitsInRange = 0
for i = 1, 40 do
if UnitExists("nameplate"..i) then
local nameplate = "nameplate"..i
if MyIsSpellInRange(spellid, nameplate) == 1 and UnitCanAttack("player", nameplate) == true and UnitName(nameplate) == totemName then
UnitsInRange = UnitsInRange + 1
end
end
end
return UnitsInRange
end
Re: Уничтожение тотемов
Ну да, збс решение если надо несколько тотемов искать.
Добавил несколько вещей...
в код UnitName("target") ~= totemName чтобы не дублировать каждый раз затычку на антиспам если в таргете уже нужный тотем находится.
по поводу макроса...
Скорее всего знаешь что в игре есть функция активации макрос команды. Например чатная команда (которая используется через макрос в игре) /blackdps cmd 3000 STUN, отправляешь эту команду в чат и у тебя в течении 3 секунд будет активен блок в боте с условием "Макрос команда STUN == TRUE", как правило в блок с этим условием спелл на стан ставят и не нужно с ботом воевать на нажатие стана.
Когда эта команда /blackdps cmd 3000 STUN в самом боте обрабатывается, то она уже выглядит как Timers['CMD_STUN'] = 3. Зная это ты можешь этот макрос запускать/создавать через пользовательский код. Собственно что я и сделал.
В твой код добавлено:
if ((Timers['CMD_AAA'] ~= nil) and 1 or 0) == 0 then -- проверяет активен ли макрос "AAA", если нет, то выполняет действия ниже.
Timers['CMD_AAA'] = math.random(2,4)/10
end
AAA - это название макроса, можно написать абсолютно любое.
Timers['CMD_AAA'] - запуск макрос команды c названием "AAA"
math.random(2,4)/10 - это выбор случайного числа в заданном промежутке. В данном случае это 0.2 и 0.4
получается что Timers['CMD_AAA'] = math.random(2,4)/10 - делает активным блок с макрос командой AAA на случайное время 0.2-0.4
а вот это условие
не даёт запускаться макросу /targetenemy пока время действия макроса AAA не закончится (которое у нас постоянно меняется 0.2-0.4)
Добавил несколько вещей...
Код: Выделить всё
function CheckTotemInSpellRange(spellid, totemName)
local UnitsInRange = 0
for i = 1, 40 do
if UnitExists("nameplate"..i) then
local nameplate = "nameplate"..i
if MyIsSpellInRange(spellid, nameplate) == 1 and UnitCanAttack("player", nameplate) == true and UnitName(nameplate) == totemName and UnitName("target") ~= totemName then
UnitsInRange = UnitsInRange + 1
if ((Timers['CMD_AAA'] ~= nil) and 1 or 0) == 0 then
Timers['CMD_AAA'] = math.random(2,4)/10
end
end
end
end
return UnitsInRange
end
по поводу макроса...
Скорее всего знаешь что в игре есть функция активации макрос команды. Например чатная команда (которая используется через макрос в игре) /blackdps cmd 3000 STUN, отправляешь эту команду в чат и у тебя в течении 3 секунд будет активен блок в боте с условием "Макрос команда STUN == TRUE", как правило в блок с этим условием спелл на стан ставят и не нужно с ботом воевать на нажатие стана.
Когда эта команда /blackdps cmd 3000 STUN в самом боте обрабатывается, то она уже выглядит как Timers['CMD_STUN'] = 3. Зная это ты можешь этот макрос запускать/создавать через пользовательский код. Собственно что я и сделал.
В твой код добавлено:
if ((Timers['CMD_AAA'] ~= nil) and 1 or 0) == 0 then -- проверяет активен ли макрос "AAA", если нет, то выполняет действия ниже.
Timers['CMD_AAA'] = math.random(2,4)/10
end
AAA - это название макроса, можно написать абсолютно любое.
Timers['CMD_AAA'] - запуск макрос команды c названием "AAA"
math.random(2,4)/10 - это выбор случайного числа в заданном промежутке. В данном случае это 0.2 и 0.4
получается что Timers['CMD_AAA'] = math.random(2,4)/10 - делает активным блок с макрос командой AAA на случайное время 0.2-0.4
а вот это условие
не даёт запускаться макросу /targetenemy пока время действия макроса AAA не закончится (которое у нас постоянно меняется 0.2-0.4)
Re: Уничтожение тотемов
Спасибо что разъяснил с макросами, теперь все стало более понятно, я даже улучшил некоторые другие элементы в своей ротации добавив в них делей так же опять переделал код который ты написал. Вместо того чтобы в функции писать имя тотема и плодить куча болоков с нужными тебе тотемами, лучше чтобы таблица была в коде и еще я туда затолкал определение цели, если это цель из списка то код стопается.
И тогда хватит одного такого маленького блока который будет искать все нужные тотемы. так же если рядом стоят несколько тотемов из списка но скрипт зацепился не за тот что нужно можно понажимать таб и он поймает тот что нужен, с небольшой каплей рандома, но это работает
Код: Выделить всё
local TotemPriorityList = {
"Тотем конденсации",
"Тотем контрудара",
"Тотем духовной связи",
"Тотем заземления",
"Тотем земляного щита",
}
function CheckTotemInSpellRange(spellid)
local UnitsInRange = 0
local currentTarget = UnitName("target")
for _, totemName in ipairs(TotemPriorityList) do
if currentTarget == totemName then
return -1
end
end
for _, totemName in ipairs(TotemPriorityList) do
for i = 1, 40 do
local nameplate = "nameplate"..i
if UnitExists(nameplate) and MyIsSpellInRange(spellid, nameplate) == 1 and UnitCanAttack("player", nameplate) and UnitName(nameplate) == totemName then
UnitsInRange = UnitsInRange + 1
if not Timers['CMD_AAA'] then
Timers['CMD_AAA'] = math.random(2,4)/10
end
break
end
end
if UnitsInRange > 0 then break end
end
return UnitsInRange
end
Re: Уничтожение тотемов
Да без проблем, рад что у тебя получилось то что ты хотел. Прикольно кстати вышло.
Дэлэйчик рандомный вообще тема, самое оно на диспелы и спеллы без гкд прикрутить. Тем более если в пвп играть постоянно.
Если интересно, то вот пример на рандомный диспелл (0.5-1с) по такой же схеме. Может пригодится)
Дэлэйчик рандомный вообще тема, самое оно на диспелы и спеллы без гкд прикрутить. Тем более если в пвп играть постоянно.
Если интересно, то вот пример на рандомный диспелл (0.5-1с) по такой же схеме. Может пригодится)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость