sub AntiMacros() dim reindex[8] reindex[0] = 11 reindex[1] = 12 reindex[2] = 13 reindex[3] = 10 reindex[4] = 16 reindex[5] = 14 reindex[6] = 17 reindex[7] = 15 var GumpID = 0 var ButtonID = 0 var ButtonText var i = 18 if uo.LastGump('text', 4) <> "0" then i = 19 end if GumpID = val(Mid(uo.LastGump('command', i), 16, 4)) ButtonID = reindex[GumpID-2225] ButtonText = uo.LastGump('command', ButtonID) uo.LClick(Val(Mid(ButtonText, 7, 3)), Val(Mid(ButtonText, 11, 3))) while not uo.LastGump('replyed') wait(100) wend end sub
Обьясните принцип работы, я не могу понять от как он узнает какие кнопки требуется нажать. ZeroDX переделал этот антимакрос всего в несколько строчек. Хочу понять основы, не могу написать его сам, каждый раз приходится искать готовый
ну каждый месяц они теперь смотрят логи и выцепляют по ним. вот я о чем ( пс - могу скинуть этот же антимакрос на стелсе, может допетришь как работает )
some wrote:пс - могу скинуть этот же антимакрос на стелсе, может допетришь как работает
Давай
2Incorrect User Ты со старой инжи снимал infogump?
procedure GumpWorkOut; var gi :TGumpInfo; code1 : Cardinal; code2 : Cardinal; i : Integer; //released_id : Cardinal;
begin //UOSay('tyt'); GetGumpInfo(GetGumpsCount-1, gi); code1 := gi.GumpButtons[0].released_id; // код картинки первой кнопки code2 := gi.GumpButtons[1].released_id; // код картинки второй кнопки
// цикл по оставшимся кнопкам for i := 2 to GetArrayLength(gi.GumpButtons)-1 do begin if gi.GumpButtons[i].released_id = code1 then // если код картинки совпадает, то... begin NumGumpButton(GetGumpsCount-1, gi.GumpButtons[i].return_value); // нажимаем эту кнопку break; // и заканчиваем цикл end; end; Wait(1000); GetGumpInfo(GetGumpsCount-1, gi); for i := 2 to GetArrayLength(gi.GumpButtons)-1 do begin if gi.GumpButtons[i].released_id = code2 then begin NumGumpButton(GetGumpsCount-1, gi.GumpButtons[i].return_value); break; end; end; end;
Да, там нужно порезать 0 и 1 кнопки (как видно из скрипта на Стелс), оставить последние цифры в них - это индексы кнопок нужных, а дальше просто uo.SendGumpSelect() по 0 кнопке и uo.WaitGump() по 1 кнопке сделать.
var b0 = Val(Mid(uo.lastgump("button",0),21,1)) var b1 = Val(Mid(uo.lastgump("button",1),21,1)) uo.waitgump(button[b1]) uo.sendgumpselect(button[b0]) end sub