Av_vA 3,044 Report post Posted July 15, 2014 Собственно, может кто дать код на использование гранаты без SuperMacro? 0 Share this post Link to post Share on other sites
фткyн 1,469 Report post Posted July 15, 2014 А чем тебя супермакро не нравится? По слоту можно. 0 Share this post Link to post Share on other sites
Av_vA 3,044 Report post Posted July 16, 2014 Интересно, как это сделать без супермакро. 0 Share this post Link to post Share on other sites
Mopak 880 Report post Posted July 16, 2014 А что именно ты хочешь от этого макроса? Вообще можно положить итем в определенный слот и вызвать по команде юз этого слота из сумки. 0 Share this post Link to post Share on other sites
Lemark 92 Report post Posted July 16, 2014 Если у тебя не дефолтовые девайсы иесть макро опции для клавымышки, можешь создать програмный макрос для вова, например, забиндить на доп клавише на мышке. GUI везде есть и там даже слепой рандом разберется. 0 Share this post Link to post Share on other sites
Av_vA 3,044 Report post Posted July 16, 2014 (edited) /script for i=1, NUM_PET_ACTION_SLOTS, 1 do local name = GetPetActionInfo(i); if ( name == "Furious Howl" ) then CastPetAction(i) else UseAction(113); end endВсё бы ничего, но он всегда использует гранату в слоте, вне зависимости от того, есть у пета Furious Howl или нет. Как быть? Рабочий вариант: /script local a = GetPetActionInfo(4); if ( a == "Furious Howl" ) then CastSpellByName("Furious Howl") else UseAction(113); end Но хочется побольше универсальности. Edited July 16, 2014 by Av_vA 0 Share this post Link to post Share on other sites
Av_vA 3,044 Report post Posted July 18, 2014 Спасибо - попробую так 0 Share this post Link to post Share on other sites
shuraken007 345 Report post Posted July 18, 2014 (edited) Вот под использование ториевой гранаты например. /script local fg, i, j fg = 0 for i = 0, 4 do for j = 1, GetContainerNumSlots(i) do texture=GetContainerItemInfo(i, j) if(texture) then if(string.find(texture, "Bomb_08")) then UseContainerItem(i, j) fg =1 break end end end if(fg == 1) then break end end как раз уложился - 254 символа. дабы узнать кого использовать в string.find(texture, "Bomb_08") юзай /script texture = GetContainerItemInfo(bagID, slot) DEFAULT_CHAT_FRAME:AddMessage(texture) bagID от 0 до 4 slot тут http://www.wowwiki.com/API_UseContainerItem?oldid=265827 или выведи вобще все вещи в сумках, дабы не париться - достаточно вставить в string.find уникальный кусочек текста из названия любой получится: /script local fg, i, j for i = 0, 4 do for j = 1, GetContainerNumSlots(i) do texture=GetContainerItemInfo(i, j) if(texture) then DEFAULT_CHAT_FRAME:AddMessage(texture) end end end дабы запустить из другого макроса используй RunMacro("Grenade") например, если ты так назвал, то с петом выглядит: /script local i, fg, name fg=0 for i = 1, NUM_PET_ACTION_SLOTS, 1 do name = GetPetActionInfo(i) if( name == "Furious Howl" ) then CastPetAction(i) fg = 1 break end end if(fg==0) then RunMacro("Grenade") end Единственное, чего я не понял - что это такое: for i = 1, NUM_PET_ACTION_SLOTS, 1 почему не for i = 1, NUM_PET_ACTION_SLOTS В супермакро же все донельзя просто и уныло UseItemByName("Ториевая граната"), аж скука - хотя оно внутри работает почти так же, мне места не хватило чтобы по имени использовать в стандартном, а разбивать на 2 макроса лень. Хотя если очень надо по имени использовать - могу двумя макросами написать - делов на пару мин. Но в супермакро есть довольно приятная штука: DoOrder("крутая граната", "менее крутая", "совсем хреновая") что первое найдет - то и заюзает, ну или DoOrder("healing potion", "lesser healing potion", "healing touch") p.s. Надеюсь, что исчерпывающее ответил на вопросы) Edited July 18, 2014 by shuraken007 0 Share this post Link to post Share on other sites
shuraken007 345 Report post Posted July 19, 2014 (edited) Покопался я в итем раке, и таки нашёл - как выудить имя из линка, причём так просто. /run for i=0,4 do for j=1,GetContainerNumSlots(i) do _,_,name = string.find(GetContainerItemLink(i,j) or "","%[(.+)%]") if(name=="Ториевая Граната") then UseContainerItem(i,j) end end end У тебя аж 83 символа под название. Edited July 19, 2014 by shuraken007 0 Share this post Link to post Share on other sites
Xudojnik 904 Report post Posted July 19, 2014 (edited) Можно вставить в макрос не название (которое от локализации зависит), а код предмета в базе данных. В итем линке код предмета это обязательный пункт и он уникально идентифицирует предмет. if (string.find(GetContainerItemLink(bag,slot),"Hitem:12450")) then UseContainerItem(bag,slot,"player") end Edited July 19, 2014 by Xudojnik 0 Share this post Link to post Share on other sites