Переодевание вещей для Logitech(клавыG15.. мышиG300 итд)

Теория и практика Diablo 3
Спасибо, все работает. G11

Спасибо!
keizo
 
Дождались! (3 года на портале)

Ребяты, а может кто добавить в код ещё один одинарный слот под амулек???
Изображение
valen
 
Дождались! (3 года на портале)

Огромное спасибо автору топика.
Я же в свою очередь слегка модернизировал код (добавил задержку между нажатиями мышки (чтобы уже совсем было без палева :D ))
--Mouse right click
PressAndReleaseMouseButton(3)
Pause = math.random(100, 150)
Sleep(Pause)
if Modify then
ReleaseKey(Modify)
Sleep(50);
end
Fen
 

Автор на портале бывает?

Makcu писал(а):
Antix23 писал(а):lelikpwn, Спасибо огромное, все работает!!
Для тех кто не знает как забиндить макрос на кнопки мыши, замените строку "if (event == "G_PRESSED" and arg == 8) then" на "if (event == "MOUSE_BUTTON_PRESSED" and arg == 3) then"
( 3 - средняя кнопка мыши, 1,2 правая и левая кнопки, на них забиндить нельзя)


True! Заработало!

Мало того. Обнаружил, что система координат ТС не совпадает с моей. Разрешение 1920х1080, fullscreen windowed. но тыкает не туда. Letterbox не помогает. Изменил скрипт на изначальный и писал свои координаты. Вот если интересно:
function OnEvent(event, arg)
if (event == "MOUSE_BUTTON_PRESSED" and arg == 9) then
--Save current cursor position
x, y = GetMousePosition();
PressAndReleaseKey("c")
Sleep(20);
MoveMouseTo (49200, 50000)
PressAndReleaseMouseButton(3)
Sleep (20);
MoveMouseTo (50800, 50000)
PressAndReleaseMouseButton(3)
Sleep (20);
MoveMouseTo (52400, 50000)
PressAndReleaseMouseButton(3)
Sleep (20);
MoveMouseTo (54000, 50000)
PressAndReleaseMouseButton(3)
Sleep (20);
MoveMouseTo (55600, 50000)
PressAndReleaseMouseButton(3)
Sleep (20);
MoveMouseTo (57200, 50000)
PressAndReleaseMouseButton(3)
Sleep (20);
MoveMouseTo (58800, 50000)
PressAndReleaseMouseButton(3)
Sleep (20);
MoveMouseTo (60400, 50000)
PressAndReleaseMouseButton(3)
Sleep (20);
MoveMouseTo (62000, 51000)
PressAndReleaseMouseButton(3)
Sleep (20);
MoveMouseTo (62000, 49000)
PressAndReleaseMouseButton(3)
Sleep (20);
MoveMouseTo (63600, 49000)
PressAndReleaseMouseButton(3)
Sleep (20);
PressAndReleaseKey("c")
MoveMouseTo(x, y)
end
end


Это конечно все класс, менять координаты и наворачивать скрипт дальше, но ИМХО, если захотят забанить, то найдут по какому алгоритму срабатывает скрипт и все равно забанят. Тем более, что исходники прям тут и лежат. Мне интересно как к этому топику отнесутся официалы. Все-таки сцыкотно за небольшой скрипт потерять акк.


Подскажите пожалуйста что делаю не так, мышка G300. Всё настроил, скрипт запускается, мышка по позициям бегает, но совершенно не нажимаются никакие кнопки, как на клавиатуре кнопка "С", так и ПКМ.
function OnEvent(event, arg)
if (event == "MOUSE_BUTTON_PRESSED" and arg == 7) then
Letterbox = "X"
Random = "X"
--Save current cursor position
x, y = GetMousePosition();
--Open Inventory
PressAndReleaseKey("i")
Sleep(20);
--Equip items by X and Y axis, Item Volume (1 or 2), IsLetterbox(VideoOption in game "X" if set),
--IsRandom(set "X' if you need random mouse pointer), Modificator ("ralt", etc)
EquipItemInventory(1, 5, 2, Letterbox, Random)
EquipItemInventory(2, 5, 1, Letterbox, Random)
EquipItemInventory(2, 6, 1, Letterbox, Random)
EquipItemInventory(3, 5, 2, Letterbox, Random)
EquipItemInventory(4, 5, 2, Letterbox, Random)
EquipItemInventory(5, 5, 2, Letterbox, Random)
EquipItemInventory(6, 5, 2, Letterbox, Random)
EquipItemInventory(7, 5, 1, Letterbox, Random)
EquipItemInventory(7, 6, 1, Letterbox, Random, "lalt")
EquipItemInventory(8, 5, 2, Letterbox, Random)
EquipItemInventory(9, 5, 2, Letterbox, Random)
EquipItemInventory(10, 5, 2, Letterbox, Random)
--Close Inventory
PressAndReleaseKey("i")
MoveMouseTo(x, y)
end
-------------------------------------------
end
----------------------------------------
--Random clicking inside square limits--
----------------------------------------
function EquipItemInventory (Item_X, Item_Y, SlotVolume, IsLetterbox, IsRandom, Modify)
--Default values

if IsLetterbox == "X" then
MinVal_X = {48400, 50600, 51800, 53500, 55200, 56700, 58500, 60200, 61800, 63500}
MaxVal_X = {49400, 51000, 52700, 54300, 56000, 57700, 59300, 61000, 62700, 64300}
MinVal_Y = {35700, 38500, 41000, 43800, 46400, 48800}
MaxVal_Y = {37700, 39800, 42500, 45000, 47700, 50200}
else
MinVal_X = {46600, 48400, 50300, 52100, 53900, 55800, 57500, 59500, 61300, 63100}
MaxVal_X = {47600, 49500, 51300, 53200, 55100, 56900, 58800, 60500, 62500, 64200}
MinVal_Y = {36200, 39000, 41800, 44800, 47800, 50500}
MaxVal_Y = {37300, 40500, 43500, 46500, 49450, 52100}
end
--Use random function
if IsRandom == "X" then
MouseX = MinVal_X[Item_X] + math.random(1, math.abs(MaxVal_X[Item_X] - MinVal_X[Item_X]))
if SlotVolume == 1 then
MouseY = MinVal_Y[Item_Y] + math.random(1, math.abs(MaxVal_Y[Item_Y] - MinVal_Y[Item_Y]))
elseif SlotVolume == 2 then
MouseY = MinVal_Y[Item_Y] + math.random(1, math.abs(MaxVal_Y[Item_Y+1] - MinVal_Y[Item_Y]))
end
else
MouseX = math.ceil((MinVal_X[Item_X] + MaxVal_X[Item_X])/2)
if SlotVolume == 1 then
MouseY = math.ceil((MinVal_Y[Item_Y] + MaxVal_Y[Item_Y])/2)
elseif SlotVolume == 2 then
MouseY = math.ceil((MinVal_Y[Item_Y] + MaxVal_Y[Item_Y+1])/2)
end
end

MoveMouseTo(MouseX, MouseY)
if Modify then
PressKey(Modify)
Sleep(200);
end
--Mouse right click
PressAndReleaseMouseButton(2)
Sleep(200);
if Modify then
ReleaseKey(Modify)
Sleep(200);
end
end
EonRa
 

valen, EquipItemInventory(1, 5, 1) добавь просто в сценарий
dant121
 
Дождались! (3 года на портале)

не работает команда
PressAndReleaseKey("c")
и
PressAndReleaseMouseButton(3)
EonRa
 

EonRa вот мой сценарий мышка G300
function OnEvent(event, arg)
if (event == "MOUSE_BUTTON_PRESSED" and arg == 8) then
--Save current cursor position
x, y = GetMousePosition();
--Open Inventory
PressAndReleaseKey("c")
Sleep(20);
--Equip items by X and Y axis, Item Volume (1 or 2), Modificator ("ralt", etc)
EquipItemInventory(10, 5, 2)
EquipItemInventory(9, 5, 2)
EquipItemInventory(8, 5, 1)
EquipItemInventory(8, 6, 1)
EquipItemInventory(7, 5, 2)
EquipItemInventory(6, 5, 2)
EquipItemInventory(5, 5, 2)
EquipItemInventory(4, 5, 2)
EquipItemInventory(3, 5, 2)
EquipItemInventory(2, 5, 2)
EquipItemInventory(1, 5, 2)
EquipItemInventory(1, 6, 1, "lalt")
--Close Inventory
PressAndReleaseKey("c")
MoveMouseTo(x, y)
end
-------------------------------------------
--View current mouse position on LCD screen
if (event == "G_PRESSED" and arg == 2) then
ClearLCD ()
x, y = GetMousePosition();
OutputLCDMessage("Mouse is at x=" .. x .. "; y= " .. y, 60000)
-- OutputLogMessage("x=" .. x .. "; y= " .. y .. "\n")
end
end
----------------------------------------
--Random clicking inside square limits--
----------------------------------------
function EquipItemInventory (Item_X, Item_Y, SlotVolume, Modify)
--Default values
MinVal_X = {48933, 50610, 52351, 53951, 55630, 57301, 58975, 60580, 62253, 63930}
MaxVal_X = {48938, 50614, 52353, 53958, 55633, 57304, 58979, 60482, 62256, 63934}
MinVal_Y = {36200, 39000, 41800, 44800, 48461, 51561}
MaxVal_Y = {37700, 40500, 43500, 46500, 48468, 51566}
--Use random function
MouseX = MinVal_X[Item_X] + math.random(1, math.abs(MaxVal_X[Item_X] - MinVal_X[Item_X]))
if SlotVolume == 1 then
MouseY = MinVal_Y[Item_Y] + math.random(1, math.abs(MaxVal_Y[Item_Y] - MinVal_Y[Item_Y]))
elseif SlotVolume == 2 then
MouseY = MinVal_Y[Item_Y] + math.random(1, math.abs(MaxVal_Y[Item_Y+1] - MinVal_Y[Item_Y]))
end
MoveMouseTo(MouseX, MouseY)
if Modify then
PressKey(Modify)
Sleep(20);
end
--Mouse right click
PressAndReleaseMouseButton(3)
Pause = math.random(100, 150)
Sleep(Pause)
if Modify then
ReleaseKey(Modify)
Sleep(50)
end
end

Сегодня после работы выложу скрипт для UOPilot (это для тек, кто обладает "обычными" девайсами)
Функции:
1. Смена шмота, естественно. Скорость работы зависит от пинга. У меня пинг 60-100, поэтому тратится около полутора секунд.
2. Рандом по координатам при нажатии на квадрат со шмоткой.
3. Рандом задержка между нажатиями.
4. Назначение любой горячей клавиши на переодевание.
5. Возможно сделаю "аварийную" остановку по нажатию любой кнопки или клика мышкой. Т.к. иногда босс успевает убить в момент переодевания. А так, вы визуально контролируете процесс и если что - можно отбежать. Не переодевшись до конца, конечно, зато остаться в живых :)

подскажите пожалуйста у меня промахиваеться по всем итемам.. и в конце ваще выходит за пределы инвентаря и нажимает пкм :(

stragaocelot писал(а):Сегодня после работы выложу скрипт для UOPilot (это для тек, кто обладает "обычными" девайсами)
Функции:
1. Смена шмота, естественно. Скорость работы зависит от пинга. У меня пинг 60-100, поэтому тратится около полутора секунд.
2. Рандом по координатам при нажатии на квадрат со шмоткой.
3. Рандом задержка между нажатиями.
4. Назначение любой горячей клавиши на переодевание.
5. Возможно сделаю "аварийную" остановку по нажатию любой кнопки или клика мышкой. Т.к. иногда босс успевает убить в момент переодевания. А так, вы визуально контролируете процесс и если что - можно отбежать. Не переодевшись до конца, конечно, зато остаться в живых :)


где же обещанный скрипт? или забанили?:)
mishuk
 
Дождались! (3 года на портале)

а смысл в этом? я слышал что логику подсчета МФ изменили, и она определяется как-то случайно, смысла переодеваться за 5 сек до килла моба уже нет. Автокликер я юзаю щас только для того чтобы распознать весь рюкзак барохла, поставил на распознавание и пошел чай пить :)
httpd
 
Дождались! (3 года на портале)

httpd писал(а):а смысл в этом? я слышал что логику подсчета МФ изменили, и она определяется как-то случайно, смысла переодеваться за 5 сек до килла моба уже нет. Автокликер я юзаю щас только для того чтобы распознать весь рюкзак барохла, поставил на распознавание и пошел чай пить :)


откуда инфа? пруф?
люди по-прежнему переодеваются макросами мышек и бросать тему не собираются
mishuk
 
Дождались! (3 года на портале)

mishuk, я не помню где, может на офф форуме писали, что МФ ща определяется за последние 2-3 минуты. те то что ты за 5 сек переоделся перед киллом, не имеет большого значения.
httpd
 
Дождались! (3 года на портале)

переехал на вин8, перестал открываться инвентарь (
function OnEvent(event, arg)
if (event == "G_PRESSED" and arg == 6) then
--Save current cursor position
x, y = GetMousePosition();
--Open Inventory
PressAndReleaseKey("c")
Sleep(20);
--Equip items by X and Y axis, Item Volume (1 or 2), Modificator ("ralt", etc)
EquipItemInventory(10, 5, 1)
EquipItemInventory(10, 6, 1)
--EquipItemInventory(9, 5, 1)
EquipItemInventory(9, 6, 1)
EquipItemInventory(8, 5, 2)
EquipItemInventory(7, 5, 2)
EquipItemInventory(6, 5, 2)
EquipItemInventory(5, 5, 2)
EquipItemInventory(4, 5, 2)
--Close Inventory
PressAndReleaseKey("c")
MoveMouseTo(x, y)
end
-------------------------------------------
--View current mouse position on LCD screen
if (event == "G_PRESSED" and arg == 2) then
ClearLCD ()
x, y = GetMousePosition();
OutputLCDMessage("Mouse is at x=" .. x .. "; y= " .. y, 60000)
-- OutputLogMessage("x=" .. x .. "; y= " .. y .. "\n")
end
end
----------------------------------------
--Random clicking inside square limits--
----------------------------------------
function EquipItemInventory (Item_X, Item_Y, SlotVolume, Modify)
--Default values
MinVal_X = {48933, 50610, 52351, 53951, 55630, 57301, 58975, 60580, 62253, 63930}
MaxVal_X = {48938, 50614, 52353, 53958, 55633, 57304, 58979, 60482, 62256, 63934}
MinVal_Y = {36200, 39000, 41800, 44800, 48461, 51561}
MaxVal_Y = {37700, 40500, 43500, 46500, 48468, 51566}
--Use random function
MouseX = MinVal_X[Item_X] + math.random(1, math.abs(MaxVal_X[Item_X] - MinVal_X[Item_X]))
if SlotVolume == 1 then
MouseY = MinVal_Y[Item_Y] + math.random(1, math.abs(MaxVal_Y[Item_Y] - MinVal_Y[Item_Y]))
elseif SlotVolume == 2 then
MouseY = MinVal_Y[Item_Y] + math.random(1, math.abs(MaxVal_Y[Item_Y+1] - MinVal_Y[Item_Y]))
end
MoveMouseTo(MouseX, MouseY)
if Modify then
PressKey(Modify)
Sleep(25);
end
--Mouse right click
PressAndReleaseMouseButton(3)
Sleep(20);
if Modify then
ReleaseKey(Modify)
end
end

есть ли смысл, еще переодеваться за секунду до смерти имуна ?
Sn0opY
 

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

у меня нет таких устройств, есть только простая мышка, в которой очень ограниченный, как я понял, язык.
a4tech xl750bh мышь.
я не смог найти, как запрограммировать в этой мыши запоминание текущей позиции курсора, и не смог найти, как управлять чувствительностью мышки или отключать её в скрипте.
если это можно и кто-то знает, как, именно для этой мышки, напишите, пожалуйста.

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

ТС - Молодец. Спасибо большое, обладаю Logitech G13, только хотел заморочиться подобным, как нашел тему. Расписано все отлично по крайней мере для меня большая часть станет ясна когда прочитаю тему ))))
Xawok
 
Дождались! (3 года на портале)

Бывет что надо перебивать координаты, а это непросто без девайса с "экранчиком". Экспериментировал довольно долго со сценарием. Хорошая штука.
Но в нынешних реалиях не востребована. Все замещаеться парагоном и лучше вложиться в боевой шмот без оглядки на мф для более быстрого фарма.
cpu8400
 
Ждал звезду с небес - зарегистрирован до выхода Diablo III Дождались! (3 года на портале)

вообще-то, востребована.
переодеваться далеко не только для мф полезно.

Ребзи, с тех пор никого не забанили? Тема актуальна, нужно на g400 сценарий написать, но я походу чайник криворукий, вставлял все сценарии тут, ни один не работает. Может кто помочь по скайпу?
hopoloc
 

Пред.

Вернуться в Игровая механика


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

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