Скрипты для l2phx

B

bond2244

Guest
//Клон самого себя.. в пати.

Код:
var invite: integer;
procedure Init;
begin
end;
procedure Free;
begin
end;
begin
if fromserver and (pck[1]=#$39) then
begin
invite:=1;
buf:= #$2A#$01#$00#$00#$00;
SendToServer;
end;
if fromserver and (pck[1]=#$5E) and (invite=1) then
begin
buf:=#$2A#$01#$00#$00#$00;
SendToServer;
end;
end.
 
Последнее редактирование модератором:

ake11a

Пользователь
Регистрация
25 Июл 2011
Сообщения
8
Лайки
0
Баллы
0
Cкрипт заточки предметов с их закупкой при необходимости
скрипт очень длинный, но работает только с настройкой запара.
//cкрипт заточки предметов с их закупкой при необходимости
//##############################################################################
program enchant;
//==============================================================================
//константы
const
name='char'; //вписать сюда имя чара
//установить константу в зависимости от типа игры (с4 или интерлюд)
interlude=true; //interlude - true, c4 - false
//***
max=100; //количество слотов в инвентаре чара
kid=1023000; //смещение c6
royid=8228; // shop id 31228
winnieid=8229;// change id 31229
buffer=8231;
dansing=8232;
//------------------------------------------------------------------------------
//список переменных
var
item, scrl, cnt: Integer;
scrollid, scrolloid: Integer; //scrollid скролла заточки
itemid, itemoid: Integer; //itemid затачиваемого предмета
maxenchlvl: Integer; //уровень заточки который требуется достичь
itembase: Array[1..4,1..max] of integer; //itemoid, itemid, kol-vo, itemlvl
ready, add, inbase, canchange, canbuy: Boolean;
timer, shops, change: Ttimer;
buydelay, scriptdelay: Integer;
itemcount, curenchlvl: Integer;
//------------------------------------------------------------------------------
// buy var
royoid, winnieoid: Integer;
adena, col, emptyslots, colchangecount, shopmode: Integer;
itemlistid, itementryid, buyitemcount, itemprice: Integer;
scrolllistid, scrollentryid, buyscrollcount, scrollprice: Integer;
itemname, scrollname: String;
needtobuy, needtochange: Boolean;
myx, myy, myz, myoid, objectid: Integer; //статы
//------------------------------------------------------------------------------
//вспомогательная
socialid : Integer;
itemsname, stringlist : Tstringlist; //названия предметов, имена продавцов
//==============================================================================
//form
//------------------------------------------------------------------------------
formmain : Tform;
splitter1 : Tsplitter;
splitter2 : Tsplitter;
stats : Tmemo;
msg : Tmemo;
panel1 : Tpanel;
groupbox2 : Tgroupbox;
label1 : Tlabel;
label2 : Tlabel;
label3 : Tlabel;
label4 : Tlabel;
label12 : Tlabel;
label13 : Tlabel;
labelbd : Tlabel;
buttonstartenchant: Tbutton;
buttonstopenchant : Tbutton;
buttonbuyitems : Tbutton;
buttonchangeadena : Tbutton;
buttonbuyscroll : Tbutton;
buttonchangewindow: Tbutton;
checkboxitem : Tcheckbox;
comboboxitem : Tcombobox;
checkboxscroll : Tcheckbox;
comboboxscroll : Tcombobox;
checkautobuy : Tcheckbox;
checkautochange: Tcheckbox;
edititemval : Tedit;
editscrollval : Tedit;
editscrolloid : Tedit;
edititemoid : Tedit;
edit1 : Tedit;
edit2 : Tedit;
editscriptdelay: Tedit;
editbuydelay : Tedit;
editkeepitems : Tedit;
showadena : Tedit;
showcol : Tedit;
starttime, endtime: Tdatetime;
//------------------------------------------------------------------------------
//==============================================================================
procedure free_formmain;
//освобождаем ресурсы ...
Begin
try
if formmain<>nil then begin
formmain.free;
formmain:=nil;
end;
finally
end;
end; //free_formmain
//==============================================================================
//------------------------------------------------------------------------------
function create_formmain : Tform;
//создаем форму и соотв. компоненты на ней ...
Var
yes : Boolean;
begin
yes := false;
result := tform.create(nil);

try
//------------------------
//свойства формы
result.caption := 'enchant (nlobp v.0.7) - shadow edition v3.7';
result.left := 175;
result.top := 175;
result.width := 700;
result.height := 300;
result.formstyle := fsnormal;
result.position := podesigned;
result.borderstyle := bssizeable;
result.borderwidth := 0;
result.windowstate := wsnormal;
result.color := clbtnface;
result.font.name := 'tahoma';
result.font.size := 8;
result.font.color := clwindowtext;
result.font.charset:= 1;
//------------------------
//......................................
//splitter1
splitter1 := tsplitter.create(result);
splitter1.parent := result;
splitter1.align := albottom;
splitter1.color := clbtnface;
splitter1.left := 0;
splitter1.top := 103;
splitter1.width := 593;
splitter1.height := 3;
splitter1.visible := true;
splitter1.tag := 0;
//......................................
//......................................
//splitter2
splitter2 := tsplitter.create(result);
splitter2.parent := result;
splitter2.align := alright;
splitter2.color := clbtnface;
splitter2.left := 442;
splitter2.top := 0;
splitter2.width := 1;
splitter2.height := 103;
splitter2.visible := true;
splitter2.tag := 0;
//......................................
//......................................
//stats
stats := tmemo.create(result);
stats.parent := result;
stats.left := 445;
stats.top := 0;
stats.width := 230;
stats.height := 103;
stats.visible := true;
stats.tag := 0;
stats.enabled := true;
stats.hint := '';
stats.showhint := false;
stats.font.name := 'tahoma';
stats.font.size := 8;
stats.font.color := clwindowtext;
stats.color := clwindow;
stats.taborder := 0;
stats.tabstop := true;
stats.align := alright;
stats.wordwrap := true;
stats.alignment := taleftjustify;
stats.wanttabs := false;
stats.wantreturns := true;
stats.hideselection := true;
stats.maxlength := 0;
stats.oemconvert := false;
stats.readonly := true;
stats.scrollbars := ssvertical;
//......................................
//......................................
//msg
msg := tmemo.create(result);
msg.parent := result;
msg.left := 0;
msg.top := 106;
msg.width := 573;
msg.height := 115;
msg.visible := true;
msg.tag := 0;
msg.enabled := true;
msg.hint := '';
msg.showhint := false;
msg.font.name := 'tahoma';
msg.font.size := 8;
msg.font.color := clwindowtext;
msg.color := clwindow;
msg.taborder := 1;
msg.tabstop := true;
msg.align := albottom;
msg.wordwrap := true;
msg.alignment := taleftjustify;
msg.wanttabs := false;
msg.wantreturns := true;
msg.hideselection := true;
msg.maxlength := 0;
msg.oemconvert := false;
msg.readonly := true;
msg.scrollbars := ssvertical;
//......................................
//......................................
//panel1
panel1 := tpanel.create(result);
panel1.parent := result;
panel1.left := 0;
panel1.top := 0;
panel1.width := 442;
panel1.height := 103;
panel1.visible := true;
panel1.tag := 0;
panel1.enabled := true;
panel1.hint := '';
panel1.showhint := false;
panel1.caption := '';
panel1.align := alclient;
panel1.color := clbtnface;
panel1.font.name := 'tahoma';
panel1.font.size := 8;
panel1.font.color := clwindowtext;
panel1.font.charset := 1;
panel1.bevelwidth := 1;
panel1.borderwidth := 0;
panel1.bevelinner := bvnone;
panel1.bevelouter := bvraised;
panel1.taborder := 2;
panel1.tabstop := false;
panel1.autosize := false;
//......................................
//......................................
//groupbox2
groupbox2 := tgroupbox.create(result);
groupbox2.parent := panel1;
groupbox2.left := 1;
groupbox2.top := 1;
groupbox2.width := 440;
groupbox2.height := 101;
groupbox2.visible := true;
groupbox2.tag := 0;
groupbox2.enabled := true;
groupbox2.hint := '';
groupbox2.showhint := false;
groupbox2.caption := 'enchant ph script - se v3.7';
groupbox2.align := alclient;
groupbox2.color := clbtnface;
groupbox2.font.name := 'tahoma';
groupbox2.font.size := 8;
groupbox2.font.color := clwindowtext;
groupbox2.font.charset := 1;
groupbox2.taborder := 0;
groupbox2.tabstop := false;
//......................................
//......................................
//label1
label1 := tlabel.create(result);
label1.parent := groupbox2;
label1.left := 10;
label1.top := 70;
label1.width := 58;
label1.height := 13;
label1.visible := true;
label1.tag := 0;
label1.enabled := true;
label1.hint := '';
label1.showhint := false;
label1.caption := 'уровень макс.:';
label1.transparent := true;
label1.wordwrap := false;
label1.alignment := taleftjustify;
label1.layout := tltop;
label1.autosize := true;
label1.align := alnone;
label1.font.name := 'tahoma';
label1.font.size := 8;
label1.font.color := clwindowtext;
label1.color := clbtnface;
//......................................
//......................................
//label1
label3 := tlabel.create(result);
label3.parent := groupbox2;
label3.left := 167;
label3.top := 70;
label3.width := 58;
label3.height := 13;
label3.visible := true;
label3.tag := 0;
label3.enabled := true;
label3.hint := '';
label3.showhint := false;
label3.caption := 'мин.:';
label3.transparent := true;
label3.wordwrap := false;
label3.alignment := taleftjustify;
label3.layout := tltop;
label3.autosize := true;
label3.align := alnone;
label3.font.name := 'tahoma';
label3.font.size := 8;
label3.font.color := clwindowtext;
label3.color := clbtnface;
//......................................
//......................................
//labelbuydelay
labelbd := tlabel.create(result);
labelbd.parent := groupbox2;
labelbd.left := 159;
labelbd.top := 98;
labelbd.width := 58;
labelbd.height := 13;
labelbd.visible := true;
labelbd.tag := 0;
labelbd.enabled := true;
labelbd.hint := 'задержки в скрипте';
labelbd.showhint := true;
labelbd.caption := 'delays:';
labelbd.transparent := true;
labelbd.wordwrap := false;
labelbd.alignment := taleftjustify;
labelbd.layout := tltop;
labelbd.autosize := true;
labelbd.align := alnone;
labelbd.font.name := 'tahoma';
labelbd.font.size := 8;
labelbd.font.color := clwindowtext;
labelbd.color := clbtnface;
//......................................
//......................................
//edit1
edit1 := tedit.create(result);
edit1.parent := groupbox2;
edit1.left := 90;
edit1.top := 67;
edit1.width := 60;
edit1.height := 21;
edit1.visible := true;
edit1.tag := 0;
edit1.enabled := true;
edit1.hint := 'введи желаемый уровень заточки';
edit1.showhint := true;
edit1.text := '16';
edit1.font.name := 'tahoma';
edit1.font.size := 8;
edit1.font.color := clwindowtext;
edit1.color := clwindow;
edit1.taborder := 5;
edit1.tabstop := true;
edit1.readonly := false;
edit1.maxlength := 0;
edit1.autosize := true;
edit1.onexit := @edit1_exit;
//......................................
//......................................
//edit2
edit2 := tedit.create(result);
edit2.parent := groupbox2;
edit2.left := 197;
edit2.top := 67;
edit2.width := 63;
edit2.height := 21;
edit2.visible := true;
edit2.tag := 0;
edit2.enabled := true;
edit2.hint := 'какого уровня смогли достичь';
edit2.showhint := true;
edit2.text := '0';
edit2.font.name := 'tahoma';
edit2.font.size := 8;
edit2.font.color := clwindowtext;
edit2.color := clwindow;
edit2.taborder := 5;
edit2.tabstop := false;
edit2.readonly := true;
edit2.maxlength := 0;
edit2.autosize := true;
//......................................
//......................................
//items to keep
editkeepitems := tedit.create(result);
editkeepitems.parent := groupbox2;
editkeepitems.left := 118;
editkeepitems.top := 95;
editkeepitems.width := 32;
editkeepitems.height := 21;
editkeepitems.visible := true;
editkeepitems.tag := 0;
editkeepitems.enabled := true;
editkeepitems.hint := 'сколько предметов оставлять';
editkeepitems.showhint := true;
editkeepitems.text := '5';
editkeepitems.font.name := 'tahoma';
editkeepitems.font.size := 8;
editkeepitems.font.color:= clwindowtext;
editkeepitems.color := clwindow;
editkeepitems.taborder := 5;
editkeepitems.tabstop := true;
editkeepitems.readonly := false;
editkeepitems.maxlength := 4;
editkeepitems.autosize := false;
//......................................
//......................................
//script delay
editscriptdelay := tedit.create(result);
editscriptdelay.parent := groupbox2;
editscriptdelay.left := 197;
editscriptdelay.top := 95;
editscriptdelay.width := 32;
editscriptdelay.height := 21;
editscriptdelay.visible := true;
editscriptdelay.tag := 0;
editscriptdelay.enabled := true;
editscriptdelay.hint := 'основная задержка скрипта';
editscriptdelay.showhint := true;
editscriptdelay.text := '795';
editscriptdelay.font.name := 'tahoma';
editscriptdelay.font.size := 8;
editscriptdelay.font.color:= clwindowtext;
editscriptdelay.color := clwindow;
editscriptdelay.taborder := 5;
editscriptdelay.tabstop := true;
editscriptdelay.readonly := false;
editscriptdelay.maxlength := 4;
editscriptdelay.autosize := false;
//......................................
//......................................
//buy delay
editbuydelay := tedit.create(result);
editbuydelay.parent := groupbox2;
editbuydelay.left := 229;
editbuydelay.top := 95;
editbuydelay.width := 31;
editbuydelay.height := 21;
editbuydelay.visible := true;
editbuydelay.tag := 0;
editbuydelay.enabled := true;
editbuydelay.hint := 'задержка при закупке';
editbuydelay.showhint := true;
editbuydelay.text := '195';
editbuydelay.font.name := 'tahoma';
editbuydelay.font.size := 8;
editbuydelay.font.color:= clwindowtext;
editbuydelay.color := clwindow;
editbuydelay.taborder := 5;
editbuydelay.tabstop := true;
editbuydelay.readonly := false;
editbuydelay.maxlength := 4;
editbuydelay.autosize := false;
//......................................
//......................................
//show adena
showadena := tedit.create(result);
showadena.parent := groupbox2;
showadena.left := 176;
showadena.top := 123;
showadena.width := 45;
showadena.height := 21;
showadena.visible := true;
showadena.tag := 0;
showadena.enabled := true;
showadena.hint := 'адены';
showadena.showhint := true;
showadena.text := 'адены';
showadena.font.name := 'tahoma';
showadena.font.size := 8;
// showadena.align := right;
showadena.font.color:= clwindowtext;
showadena.color := clwindow;
// showadena.borderstyle:= 0;
showadena.taborder := 5;
showadena.tabstop := true;
showadena.readonly := true;
showadena.maxlength := 10;
showadena.autosize := false;
//......................................
//......................................
//show adena
showcol := tedit.create(result);
showcol.parent := groupbox2;
showcol.left := 221;
showcol.top := 123;
showcol.width := 39;
showcol.height := 21;
showcol.visible := true;
showcol.tag := 0;
showcol.enabled := true;
showcol.hint := 'coins of luck';
showcol.showhint := true;
showcol.text := 'cols';
showcol.font.name := 'tahoma';
showcol.font.size := 8;
showcol.font.color:= clwindowtext;
showcol.color := clwindow;
showcol.taborder := 5;
showcol.tabstop := true;
showcol.readonly := true;
showcol.maxlength := 10;
showcol.autosize := false;
//......................................
//......................................
//label2
label2 := tlabel.create(result);
label2.parent := groupbox2;
label2.left := 416;
label2.top := 19;
label2.width := 18;
label2.height := 13;
label2.visible := true;
label2.tag := 0;
label2.enabled := true;
label2.hint := '';
label2.showhint := false;
label2.caption := 'шт.';
label2.transparent := true;
label2.wordwrap := false;
label2.alignment := taleftjustify;
label2.layout := tltop;
label2.autosize := true;
label2.align := alnone;
label2.font.name := 'tahoma';
label2.font.size := 8;
label2.font.color := clwindowtext;
label2.color := clbtnface;
//......................................
//......................................
//label4
label4 := tlabel.create(result);
label4.parent := groupbox2;
label4.left := 416;
label4.top := 43;
label4.width := 18;
label4.height := 13;
label4.visible := true;
label4.tag := 0;
label4.enabled := true;
label4.hint := '';
label4.showhint := false;
label4.caption := 'шт.';
label4.transparent := true;
label4.wordwrap := false;
label4.alignment := taleftjustify;
label4.layout := tltop;
label4.autosize := true;
label4.align := alnone;
label4.font.name := 'tahoma';
label4.font.size := 8;
label4.font.color := clwindowtext;
label4.color := clbtnface;
//......................................
//......................................
//label12
label12 := tlabel.create(result);
label12.parent := groupbox2;
label12.left := 273;
label12.top := 3;
label12.width := 33;
label12.height := 13;
label12.visible := true;
label12.tag := 0;
label12.enabled := true;
label12.hint := '';
label12.showhint := false;
label12.caption := 'itemid';
label12.transparent := true;
label12.wordwrap := false;
label12.alignment := taleftjustify;
label12.layout := tltop;
label12.autosize := true;
label12.align := alnone;
label12.font.name := 'tahoma';
label12.font.size := 8;
label12.font.color := clwindowtext;
label12.color := clbtnface;
//......................................
//......................................
//label13
label13 := tlabel.create(result);
label13.parent := groupbox2;
label13.left := 349;
label13.top := 3;
label13.width := 35;
label13.height := 13;
label13.visible := true;
label13.tag := 0;
label13.enabled := true;
label13.hint := '';
label13.showhint := false;
label13.caption := 'кол-во';
label13.transparent := true;
label13.wordwrap := false;
label13.alignment := taleftjustify;
label13.layout := tltop;
label13.autosize := true;
label13.align := alnone;
label13.font.name := 'tahoma';
label13.font.size := 8;
label13.font.color := clwindowtext;
label13.color := clbtnface;
//......................................
//......................................
//checkboxitem
checkboxitem := tcheckbox.create(result);
checkboxitem.parent := groupbox2;
checkboxitem.left := 18;
checkboxitem.top := 18;
checkboxitem.width := 66;
checkboxitem.height := 17;
checkboxitem.visible := true;
checkboxitem.tag := 0;
checkboxitem.enabled := true;
checkboxitem.hint := 'поставить галочку если выбрали предмет';
checkboxitem.showhint := true;
checkboxitem.caption := 'предмет';
checkboxitem.font.name := 'tahoma';
checkboxitem.font.size := 8;
checkboxitem.font.color := clwindowtext;
checkboxitem.color := clbtnface;
checkboxitem.taborder := 0;
checkboxitem.tabstop := true;
checkboxitem.checked := false;
checkboxitem.allowgrayed := false;
checkboxitem.state := cbunchecked;
checkboxitem.onclick := @checkboxitem_click;
//......................................
//......................................
//comboboxitem
comboboxitem := tcombobox.create(result);
comboboxitem.parent := groupbox2;
comboboxitem.left := 88;
comboboxitem.top := 16;
comboboxitem.width := 172;
comboboxitem.height := 21;
comboboxitem.visible := true;
comboboxitem.tag := 0;
comboboxitem.enabled := true;
comboboxitem.hint := 'выбери из списка затачиваемый предмет';
comboboxitem.showhint := true;
comboboxitem.text := 'comboboxitem';
comboboxitem.font.name := 'tahoma';
comboboxitem.font.size := 8;
comboboxitem.font.color := clwindowtext;
comboboxitem.color := clwindow;
comboboxitem.taborder := 1;
comboboxitem.tabstop := true;
comboboxitem.itemindex := -1;
comboboxitem.sorted := false;
comboboxitem.itemheight := 13;
comboboxitem.onclick := @comboboxitem_click;
//......................................
//......................................
//buttonstartenchant
buttonstartenchant := tbutton.create(result);
buttonstartenchant.parent := groupbox2;
buttonstartenchant.left := 265;
buttonstartenchant.top := 67;
buttonstartenchant.width := 75;
buttonstartenchant.height := 25;
buttonstartenchant.visible := true;
buttonstartenchant.tag := 0;
buttonstartenchant.enabled := false;
buttonstartenchant.hint := 'выберите предмет и заточку';
buttonstartenchant.showhint := true;
buttonstartenchant.caption := 'начать';
buttonstartenchant.font.name := 'tahoma';
buttonstartenchant.font.size := 8;
buttonstartenchant.font.color := clwindowtext;
buttonstartenchant.font.charset := 1;
buttonstartenchant.taborder := 2;
buttonstartenchant.tabstop := true;
buttonstartenchant.cancel := false;
buttonstartenchant.modalresult := 0;
buttonstartenchant.onclick := @buttonstartenchant_click;
//......................................
//......................................
//buttonstopenchant
buttonstopenchant := tbutton.create(result);
buttonstopenchant.parent := groupbox2;
buttonstopenchant.left := 341;
buttonstopenchant.top := 67;
buttonstopenchant.width := 75;
buttonstopenchant.height := 25;
buttonstopenchant.visible := true;
buttonstopenchant.tag := 0;
buttonstopenchant.enabled := true;
buttonstopenchant.hint := '';
buttonstopenchant.showhint := false;
buttonstopenchant.caption := 'остановить';
buttonstopenchant.font.name := 'tahoma';
buttonstopenchant.font.size := 8;
buttonstopenchant.font.color := clwindowtext;
buttonstopenchant.font.charset := 1;
buttonstopenchant.taborder := 3;
buttonstopenchant.tabstop := true;
buttonstopenchant.cancel := false;
buttonstopenchant.modalresult := 0;
buttonstopenchant.onclick := @buttonstopenchant_click;
//......................................
//......................................
//buttonbuyitems
buttonbuyitems := tbutton.create(result);
buttonbuyitems.parent := groupbox2;
buttonbuyitems.left := 265;
buttonbuyitems.top := 95;
buttonbuyitems.width := 150;
buttonbuyitems.height := 25;
buttonbuyitems.visible := true;
buttonbuyitems.tag := 0;
buttonbuyitems.enabled := false;
buttonbuyitems.hint := 'закупка предметов';
buttonbuyitems.showhint := false;
buttonbuyitems.caption := 'закупка';
buttonbuyitems.font.name := 'tahoma';
buttonbuyitems.font.size := 8;
buttonbuyitems.font.color := clwindowtext;
buttonbuyitems.font.charset := 1;
buttonbuyitems.taborder := 3;
buttonbuyitems.tabstop := true;
buttonbuyitems.cancel := false;
buttonbuyitems.modalresult := 0;
buttonbuyitems.onclick := @buttonbuyitems_click;
//......................................
//......................................
Buttonbuyscroll := tbutton.create(result);
buttonbuyscroll.parent := groupbox2;
buttonbuyscroll.left := 91;
buttonbuyscroll.top := 95;
buttonbuyscroll.width := 25;
buttonbuyscroll.height := 25;
buttonbuyscroll.visible := true;
buttonbuyscroll.tag := 0;
buttonbuyscroll.enabled := true;
buttonbuyscroll.hint := '';
buttonbuyscroll.showhint := false;
buttonbuyscroll.caption := 's';
buttonbuyscroll.font.name := 'tahoma';
buttonbuyscroll.font.size := 8;
buttonbuyscroll.font.color := clwindowtext;
buttonbuyscroll.font.charset := 1;
buttonbuyscroll.taborder := 3;
buttonbuyscroll.tabstop := true;
buttonbuyscroll.cancel := false;
buttonbuyscroll.modalresult := 0;
buttonbuyscroll.onclick := @buttonbuyscroll_click;
//......................................
//......................................
Buttonchangewindow := tbutton.create(result);
buttonchangewindow.parent := groupbox2;
buttonchangewindow.left := 91;
buttonchangewindow.top := 123;
buttonchangewindow.width := 25;
buttonchangewindow.height := 25;
buttonchangewindow.visible := true;
buttonchangewindow.tag := 0;
buttonchangewindow.enabled := true;
buttonchangewindow.hint := '';
buttonchangewindow.showhint := false;
buttonchangewindow.caption := 'w';
buttonchangewindow.font.name := 'tahoma';
buttonchangewindow.font.size := 8;
buttonchangewindow.font.color := clwindowtext;
buttonchangewindow.font.charset := 1;
buttonchangewindow.taborder := 3;
buttonchangewindow.tabstop := true;
buttonchangewindow.cancel := false;
buttonchangewindow.modalresult := 0;
buttonchangewindow.onclick := @buttonchangewindow_click;
//......................................
//......................................
//buttonchangeadena
buttonchangeadena := tbutton.create(result);
buttonchangeadena.parent := groupbox2;
buttonchangeadena.left := 265;
buttonchangeadena.top := 123;
buttonchangeadena.width := 150;
buttonchangeadena.height := 25;
buttonchangeadena.visible := true;
buttonchangeadena.tag := 0;
buttonchangeadena.enabled := true;
buttonchangeadena.hint := '';
buttonchangeadena.showhint := false;
buttonchangeadena.caption := 'обменять col на адены';
buttonchangeadena.font.name := 'tahoma';
buttonchangeadena.font.size := 8;
buttonchangeadena.font.color := clwindowtext;
buttonchangeadena.font.charset := 1;
buttonchangeadena.taborder := 3;
buttonchangeadena.tabstop := true;
buttonchangeadena.cancel := false;
buttonchangeadena.modalresult := 0;
buttonchangeadena.onclick := @buttonchangeadena_click;
//......................................
//......................................
//checkboxscroll
checkboxscroll := tcheckbox.create(result);
checkboxscroll.parent := groupbox2;
checkboxscroll.left := 18;
checkboxscroll.top := 41;
checkboxscroll.width := 66;
checkboxscroll.height := 23;
checkboxscroll.visible := true;
checkboxscroll.tag := 0;
checkboxscroll.enabled := true;
checkboxscroll.hint := 'поставить галочку если выбрали скролл заточки';
checkboxscroll.showhint := true;
checkboxscroll.caption := 'заточка';
checkboxscroll.font.name := 'tahoma';
checkboxscroll.font.size := 8;
checkboxscroll.font.color := clwindowtext;
checkboxscroll.color := clbtnface;
checkboxscroll.taborder := 4;
checkboxscroll.tabstop := true;
checkboxscroll.checked := false;
checkboxscroll.allowgrayed := false;
checkboxscroll.state := cbunchecked;
checkboxscroll.onclick := @checkboxscroll_click;
//......................................
//......................................
//comboboxscroll
comboboxscroll := tcombobox.create(result);
comboboxscroll.parent := groupbox2;
comboboxscroll.left := 88;
comboboxscroll.top := 40;
comboboxscroll.width := 172;
comboboxscroll.height := 21;
comboboxscroll.visible := true;
comboboxscroll.tag := 0;
comboboxscroll.enabled := true;
comboboxscroll.hint := 'выбери из списка свиток заточки';
comboboxscroll.showhint := true;
comboboxscroll.text := 'comboboxscroll';
comboboxscroll.font.name := 'tahoma';
comboboxscroll.font.size := 8;
comboboxscroll.font.color:= clwindowtext;
comboboxscroll.color := clwindow;
comboboxscroll.taborder := 5;
comboboxscroll.tabstop := true;
comboboxscroll.itemindex := -1;
comboboxscroll.sorted := false;
comboboxscroll.itemheight:= 13;
comboboxscroll.onclick := @comboboxscroll_click;
//......................................
//......................................
//checkautobuy
checkautobuy := tcheckbox.create(result);
checkautobuy.parent := groupbox2;
checkautobuy.left := 419;
checkautobuy.top := 95;
checkautobuy.width := 23;
checkautobuy.height := 23;
checkautobuy.visible := true;
checkautobuy.tag := 0;
checkautobuy.enabled := true;
checkautobuy.hint := 'автоматизировать закупку';
checkautobuy.showhint := true;
checkautobuy.caption := 'ab';
checkautobuy.font.name := 'tahoma';
checkautobuy.font.size := 5;
checkautobuy.font.color := clwindowtext;
checkautobuy.color := clbtnface;
checkautobuy.taborder := 4;
checkautobuy.tabstop := true;
checkautobuy.checked := true;
checkautobuy.allowgrayed := false;
checkautobuy.state := cbchecked;
checkautobuy.onclick := @checkautobuy_click;
//......................................
//......................................
//checkautochange
checkautochange := tcheckbox.create(result);
checkautochange.parent := groupbox2;
checkautochange.left := 419;
checkautochange.top := 123;
checkautochange.width := 23;
checkautochange.height := 23;
checkautochange.visible := true;
checkautochange.tag := 0;
checkautochange.enabled := true;
checkautochange.hint := 'автоматизировать обмен';
checkautochange.showhint := true;
checkautochange.caption := 'ac';
checkautochange.font.name := 'tahoma';
checkautochange.font.size := 5;
checkautochange.font.color := clwindowtext;
checkautochange.color := clbtnface;
checkautochange.taborder := 4;
checkautochange.tabstop := true;
checkautochange.checked := true;
checkautochange.allowgrayed := false;
checkautochange.state := cbchecked;
checkautochange.onclick := @checkautochange_click;
//......................................
//......................................
//edititemval
edititemval := tedit.create(result);
edititemval.parent := groupbox2;
edititemval.left := 341;
edititemval.top := 16;
edititemval.width := 72;
edititemval.height := 21;
edititemval.visible := true;
edititemval.tag := 0;
edititemval.enabled := true;
edititemval.hint := '';
edititemval.showhint := false;
edititemval.text := '0';
edititemval.font.name := 'tahoma';
edititemval.font.size := 8;
edititemval.font.color := clwindowtext;
edititemval.color := clwindow;
edititemval.taborder := 6;
edititemval.tabstop := true;
edititemval.readonly := true;
edititemval.maxlength := 0;
edititemval.autosize := true;
//......................................
//......................................
//editscrollval
editscrollval := tedit.create(result);
editscrollval.parent := groupbox2;
editscrollval.left := 341;
editscrollval.top := 40;
editscrollval.width := 72;
editscrollval.height := 21;
editscrollval.visible := true;
editscrollval.tag := 0;
editscrollval.enabled := true;
editscrollval.hint := '';
editscrollval.showhint := false;
editscrollval.text := '0';
editscrollval.font.name := 'tahoma';
editscrollval.font.size := 8;
editscrollval.font.color := clwindowtext;
editscrollval.color := clwindow;
editscrollval.taborder := 7;
editscrollval.tabstop := true;
editscrollval.readonly := true;
editscrollval.maxlength := 0;
editscrollval.autosize := true;
//......................................
//......................................
//editscrolloid
editscrolloid := tedit.create(result);
editscrolloid.parent := groupbox2;
editscrolloid.left := 263;
editscrolloid.top := 40;
editscrolloid.width := 72;
editscrolloid.height := 21;
editscrolloid.visible := true;
editscrolloid.tag := 0;
editscrolloid.enabled := true;
editscrolloid.hint := '';
editscrolloid.showhint := false;
editscrolloid.text := '0';
editscrolloid.font.name := 'tahoma';
editscrolloid.font.size := 8;
editscrolloid.font.color := clwindowtext;
editscrolloid.color := clwindow;
editscrolloid.taborder := 8;
editscrolloid.tabstop := true;
editscrolloid.readonly := true;
editscrolloid.maxlength := 0;
editscrolloid.autosize := true;
//......................................
//......................................
//edititemoid
edititemoid := tedit.create(result);
edititemoid.parent := groupbox2;
edititemoid.left := 264;
edititemoid.top := 16;
edititemoid.width := 72;
edititemoid.height := 21;
edititemoid.visible := true;
edititemoid.tag := 0;
edititemoid.enabled := true;
edititemoid.hint := '';
edititemoid.showhint := false;
edititemoid.text := '0';
edititemoid.font.name := 'tahoma';
edititemoid.font.size := 8;
edititemoid.font.color := clwindowtext;
edititemoid.color := clwindow;
edititemoid.taborder := 9;
edititemoid.tabstop := true;
edititemoid.readonly := true;
edititemoid.maxlength := 0;
edititemoid.autosize := true;
//......................................
Yes := true;
finally
if not yes then begin
//освобождаем ресурсы, если неудачно ...
If result<>nil then begin
result.free;
result:=nil;
end;
end;
end;
msg.lines.add('информация о заточке');
stats.lines.add('системная информация');
result.show;
end;
//------------------------------------------------------------------------------
//==============================================================================
//******************************************************************************
procedure init; //вызывается при включении скрипта
var
i:integer;
begin
formmain:=create_formmain;
//enchant:=false;
curenchlvl:=0;
buydelay:=strtoint(editbuydelay.text);
//..............................................................................
Timer:=ttimer.create(nil);
timer.ontimer:[email protected];
timer.enabled:=false;
timer.interval:=(strtoint(editscriptdelay.text)); //время задержки
//..............................................................................
Shops:=ttimer.create(nil);
shops.ontimer:[email protected];
shops.enabled:=false;
shops.interval:=buydelay; //время задержки
//..............................................................................
Change:=ttimer.create(nil);
change.ontimer:[email protected];
change.enabled:=false;
change.interval:=buydelay; //время задержки
//..............................................................................
Starttime:=time;
// stats.lines.add('время '+timetostr(starttime));
buttonbuyitems.enabled:=false;
needtochange:=false;
ready:=false;
add:=false;
//пакет requestitemlist
buf:=hstr('0f');
sendtoserverex(name);
// shopmode:=2;
stringlist:=tstringlist.create;
itemsname:=tstringlist.create;
royoid:=1209014944;
winnieoid:=1209014946;
maxenchlvl:=(strtoint(edit1.text));
try
itemsname.loadfromfile('itemsid.ini');
except
msg.lines.add('itemsid.ini не найден!');
exit;
end;
end;
//******************************************************************************
procedure free; //вызывается при выключении скрипта
begin
// itembase:=nil; //нельзя так делать с массивом
timer.free;
stringlist.clear;
itemsname.clear;
//достаточно освободить форму
free_formmain;
end;
//..............................................................................
//******************************************************************************
//==============================================================================
//обработчики событий для элементов управления на форме
//..............................................................................
//checkboxitem
procedure checkboxitem_click(sender: Tcheckbox);
//event : Onclick
begin
if checkboxitem.checked
then begin
itemoid:=itembase[1,comboboxitem.itemindex+1];
itemid:=itembase[2,comboboxitem.itemindex+1];
if (emptyslots>0) then begin
itemidbase(inbase);
buttonbuyitems.enabled:=true;
buttonbuyitems.caption:=((comboboxitem.text)+': '+inttostr(emptyslots)+'шт.');
stats.lines.add(' >'+inttostr(adena-(itemprice*emptyslots)));
end
else begin
buttonbuyitems.caption:=('инвентарь полон');
stats.lines.add(' >'+inttostr(adena-(itemprice*emptyslots)));
end;
//проверка
// edititemoid.text:=inttostr(itemid);
// edititemval.text:=inttostr(itemoid);
comboboxitem.enabled:=false; //выключаем
if (itemid>0) and (scrollid>0) and checkboxscroll.checked then begin
buttonstartenchant.enabled:=true;
buttonstartenchant.showhint:=true;
end;
end else begin
itemid:=0; //отмена
itemoid:=0;
comboboxitem.enabled:=true; //включаем
buttonbuyitems.caption:=('закупка');
buttonbuyitems.enabled:=false;
buttonstartenchant.enabled:=false;
buttonstartenchant.showhint:=true;
//пакет requestitemlist
buf:=hstr('0f');
sendtoserverex(name);
end;
end;
//..............................................................................
//comboboxitem
procedure comboboxitem_click(sender: Tcombobox);
//event : Onclick
begin
itemoid:=itembase[1,comboboxitem.itemindex+1];
itemid:=itembase[2,comboboxitem.itemindex+1];
// itemid:=extractidvalues(comboboxitem.items.strings[comboboxitem.itemindex]);
edititemoid.text:=inttostr(itemid);
edititemval.text:=inttostr(sumitem(itemid));
end;
//..............................................................................
//checkboxscroll
procedure checkboxscroll_click(sender: Tcheckbox);
//event : Onclick
var
scrolltobuy: Integer;
begin
if checkboxscroll.checked
then begin
scrolloid:=itembase[1,comboboxscroll.itemindex+1];
scrollid:=itembase[2,comboboxscroll.itemindex+1];
itemidbase(inbase);
scrolltobuy:=trunc(adena/scrollprice);
stats.lines.add('автозакупка свитков включена');
stats.lines.add((scrollname)+': '+inttostr(trunc(scrollprice/1000))+'к а.');
stats.lines.add('аден хватит на '+inttostr(scrolltobuy)+' свитков');
// проверка

// editscrolloid.text:=inttostr(scrollid);
// editscrollval.text:=inttostr(scrolloid);
comboboxscroll.enabled:=false; //выключаем
if (itemid>0) and (scrollid>0) and checkboxitem.checked then begin
buttonstartenchant.enabled:=true;
buttonstartenchant.showhint:=true;
end;
end else begin
scrollid:=0; //отмена
scrolloid:=0;
comboboxscroll.enabled:=true; //включаем
buttonstartenchant.enabled:=false;
buttonstartenchant.showhint:=true;
//пакет requestitemlist
buf:=hstr('0f');
sendtoserverex(name);
end;
end;
//..............................................................................
//comboboxscroll
procedure comboboxscroll_click(sender: Tcombobox);
//event : Onclick
begin
scrolloid:=itembase[1,comboboxscroll.itemindex+1];
scrollid:=itembase[2,comboboxscroll.itemindex+1];
// scrollid:=extractidvalues(comboboxscroll.items.strings[comboboxscroll.itemindex]);
editscrolloid.text:=inttostr(scrollid);
editscrollval.text:=inttostr(sumitem(scrollid));
end;
//..............................................................................
//buttonstartenchant
procedure buttonstartenchant_click(sender: Tbutton);
//event : Onclick
begin
curenchlvl:=0;
edit2.text:=inttostr(curenchlvl);
buttonbuyitems.enabled:=false;
buttonbuyitems.caption:=('закупка');
buttonchangeadena.enabled:=false;
buttonchangeadena.caption:=('обмен');
msg.lines.add('команда старт!');
if (strtoint(editscrolloid.text)<3) and inbase then buyscroll;
buttonstartenchant.enabled:=false;
buttonstartenchant.showhint:=false;
checkautobuy.enabled:=false;
checkautochange.enabled:=false;
editbuydelay.enabled:=false;
editscriptdelay.enabled:=false;
editkeepitems.enabled:=false;
timer.enabled:=true;
end;
//..............................................................................
//buttonstopenchant
procedure buttonstopenchant_click(sender: Tbutton);
//event : Onclick
begin
msg.lines.add('команда стоп!');
timer.enabled:=false;
shops.enabled:=false;
change.enabled:=false;
needtobuy:=false;
needtochange:=false;
ready:=false;
buf:=hstr('0f');
sendtoserverex(name);
checkautobuy.enabled:=true;
checkautochange.enabled:=true;
editbuydelay.enabled:=true;
editscriptdelay.enabled:=true;
adenacounter(colchangecount, canchange, canbuy);
if checkboxitem.checked then begin
if (emptyslots>0) then begin
buttonbuyitems.enabled:=true;
buttonbuyitems.caption:=((comboboxitem.text)+': '+inttostr(emptyslots)+'шт.');
end
else begin
buttonbuyitems.enabled:=false;
buttonbuyitems.caption:=('инвентарь полон');
end;
end else begin
buttonbuyitems.enabled:=false;
buttonbuyitems.caption:=('закупка');
end;
if not canchange then begin
buttonchangeadena.enabled:=false;
buttonchangeadena.caption:=('максимум аден');
end else begin
buttonchangeadena.enabled:=true;
buttonchangeadena.caption:=('обменять '+inttostr(colchangecount*100)+' col');
end;
buttonstartenchant.enabled:=true;
buttonstartenchant.showhint:=true;
buttonchangeadena.enabled:=true;
editkeepitems.enabled:=true;
// buttonchangeadena.caption:=('обмен');
end;
//..............................................................................
//checkautobuy
procedure checkautobuy_click(sender: Tcheckbox);
//event : Onclick
var
i: Integer;
begin
if checkautobuy.checked then begin

end;
end;
//..............................................................................
//checkautochange
procedure checkautochange_click(sender: Tcheckbox);
//event : Onclick
var
i: Integer;
begin
if checkautochange.checked then begin
// shops.enabled:=true;
end;
end;
//..............................................................................
//buttonbuyitems
procedure buttonbuyitems_click(sender: Tbutton);
//event : Onclick
begin
stats.lines.add('закупка '+(itemname));
timer.enabled:=false;
ready:=false;
buyitems(emptyslots);
// ready:=true;
end;
//..............................................................................

//buttonbuyscroll
procedure buttonbuyscroll_click(sender: Tbutton);
//event : Onclick
var
cnt, ioa, ioacount: Integer;
begin
ioa:=(trunc(2000000000/itemprice));
ioacount:=(trunc(emptyslots/ioa));
stats.lines.add('ioa: '+inttostr(ioa));
stats.lines.add('ioa count: '+inttostr(ioacount));
//for cnt:=1 to ioacount do begin
//stats.lines.add('начало: '+inttostr(cnt));
colchange;
stats.lines.add('был обмен');
delay(100);
// targetattacker('roy', royoid);
requestbypasstoserver('menu_select?ask=-303&reply='+inttostr(itemlistid));
stats.lines.add('ждем открытия диалога');
delay(500); // ждем открытия диалога
for cnt:=1 to ioa do begin
requestmultisellitem(itemlistid, itementryid, buyitemcount);
delay(buydelay);
end;
//end;
// stats.lines.add('click');
// itemidbase(inbase);
// if inbase then buyscroll;
end;
//..............................................................................
//buttonchangewindow
procedure buttonchangewindow_click(sender: Tbutton);
//event : Onclick
var
c, ioa: Integer;
begin
// needtochange:=true;
// shops.enabled:=true;
end;
//..............................................................................
//buttonchangeadena
procedure buttonchangeadena_click(sender: Tbutton);
//event : Onclick
begin
timer.enabled:=false;
ready:=false;
adenacounter(colchangecount, canchange, canbuy);
if canchange then colchange;
adenacounter(colchangecount, canchange, canbuy);
if not canchange then begin
buttonchangeadena.enabled:=false;
buttonchangeadena.caption:=('максимум аден');
end;
//buttonstopenchant_click;
end;
//..............................................................................
//*******************
procedure formstatus;
begin
adenacounter(colchangecount, canchange, canbuy);
itemidbase(inbase);
if timer.enabled then begin
buttonstartenchant.enabled:=false;
buttonstopenchant.enabled:=true;
buttonbuyitems.enabled:=false;
buttonchangeadena.enabled:=false;
buttonbuyscroll.enabled:=false;
buttonchangewindow.enabled:=false;
// buttonchangeadena.caption:=('максимум аден');
checkautobuy.enabled:=false;
checkautochange.enabled:=false;
editbuydelay.enabled:=false;
editscriptdelay.enabled:=false;
editkeepitems.enabled:=false;
end else begin
buttonstartenchant.enabled:=true;
buttonstopenchant.enabled:=true;
buttonbuyitems.enabled:=true;
buttonchangeadena.enabled:=true;
buttonbuyscroll.enabled:=true;
buttonchangewindow.enabled:=true;
// buttonchangeadena.caption:=('максимум аден');
checkautobuy.enabled:=true;
checkautochange.enabled:=true;
editbuydelay.enabled:=true;
editscriptdelay.enabled:=true;
editkeepitems.enabled:=true;
end;
end;
//......................................
Procedure edit1_exit(sender: Tedit);
//event : Onexit
begin
//
end;
//======================== procedures ==========================================
//..............................................................................
Procedure say(msg:string);
begin
buf:=hstr('4a 00 00 00 00');
writed(2);
writes(name);
writes(msg);
sendtoclientex(name);
end;
//......................................
//******************************************************************************
//21=requestbypasstoserver:s(cmd)
procedure requestbypasstoserver(cmd:string);
begin
buf:=#$21;
writes(cmd);
sendtoserverex(name);
end;
//......................................
//******************************************************************************
procedure requestmultisellitem(listid, entryid, count:integer);
begin
msg.lines.add('покупаем listid:'+inttostr(listid)+' entryid:'+inttostr(entryid)+' в кол-ве:'+inttostr(count));
buf:=#$a7;
writed(listid);
writed(entryid);
writed(count);
sendtoserverex(name);
end;
//******************************************************************************
//04=action:h(objectid)d(originx)d(originy)d(originz)b(shiftflag)
procedure target(objectid: Integer);
begin
buf:=#$04;
writed(objectid);
writed(myx);
writed(myy);
writed(myz);
writec(00);
sendtoserverex(name);
end;
//******************************************************************************
procedure targetattacker(cat: String; attackeroid: Integer);
var
roy, winnie: String;
begin
timer.enabled:=false;
if (cat='roy') then begin
if (attackeroid>0) then begin
msg.lines.add((cat)+' objectid='+inttostr(attackeroid)+' player='+inttostr(myoid));
target(royoid);
delay(500);
target(royoid);
delay(500);
end else begin
stats.lines.add('oid '+(cat)+' еще не найден');
end;
end;
if (cat='winnie') then begin
if (attackeroid>0) then begin
msg.lines.add((cat)+' objectid='+inttostr(attackeroid)+' player='+inttostr(myoid));
target(winnieoid);
delay(500);
target(winnieoid);
delay(500);
end else begin
stats.lines.add('oid '+(cat)+' еще не найден');
end;
end;
end;
//******************************************************************************
//2f=requestmagicskilluse:dmagicid)d(ctrlpressed)b(shiftpressed)
procedure magicskilluse(magicid: Integer);
begin
buf:=#$2f;
writed(magicid);
writed(00);
writec(00);
sendtoserverex(name);
end;
//******************************************************************************
//........................ Base of item id (list, entry) .......................
Procedure itemidbase(var inbase: Boolean);
begin
//*** scroll base ***
if scrollid=955 then begin
scrolllistid:=559;
scrollentryid:=1;
buyscrollcount:=1;
scrollname:=('enchant weapon (grade d)');
scrollprice:=50000;
inbase:=true;
end;
if scrollid=956 then begin
scrolllistid:=559;
scrollentryid:=3;
buyscrollcount:=1;
scrollname:=('enchant armor (grade d)');
scrollprice:=6000;
inbase:=true;
end;
if scrollid=951 then begin
scrolllistid:=559;
scrollentryid:=5;
buyscrollcount:=1;
scrollname:=('enchant weapon (grade c)');
scrollprice:=110000;
inbase:=true;
end;
if scrollid=952 then begin
scrolllistid:=559;
scrollentryid:=7;
buyscrollcount:=1;
scrollname:=('enchant armor (grade c)');
scrollprice:=15000;
inbase:=true;
end;
if scrollid=947 then begin
scrolllistid:=559;
scrollentryid:=9;
buyscrollcount:=1;
scrollname:=('enchant weapon (grade b)');
scrollprice:=500000;
inbase:=true;
end;
if scrollid=948 then begin
scrolllistid:=559;
scrollentryid:=11;
buyscrollcount:=1;
scrollname:=('enchant armor (grade b)');
scrollprice:=80000;
inbase:=true;
end;
if scrollid=729 then begin
scrolllistid:=559;
scrollentryid:=13;
buyscrollcount:=1;
scrollname:=('enchant weapon (grade a)');
scrollprice:=5000000;
inbase:=true;
end;
if scrollid=730 then begin
scrolllistid:=559;
scrollentryid:=15;
buyscrollcount:=1;
scrollname:=('enchant armor (grade a)');
scrollprice:=500000;
inbase:=true;
end;
if scrollid=959 then begin
scrolllistid:=559;
scrollentryid:=17;
buyscrollcount:=1;
scrollname:=('enchant weapon (grade s)');
scrollprice:=10000000;
inbase:=true;
end;
if scrollid=960 then begin
scrolllistid:=559;
scrollentryid:=19;
buyscrollcount:=1;
scrollname:=('enchant armor (grade s)');
scrollprice:=1000000;
inbase:=true;
end;
if scrollid=6575 then begin
scrolllistid:=559;
scrollentryid:=21;
buyscrollcount:=1;
scrollname:=('blessed enchant weapon (grade d)');
scrollprice:=500000;
inbase:=true;
end;
if scrollid=6576 then begin
scrolllistid:=559;
scrollentryid:=23;
buyscrollcount:=1;
scrollname:=('blessed enchant armor (grade d)');
scrollprice:=60000;
inbase:=true;
end;
if scrollid=6573 then begin
scrolllistid:=559;
scrollentryid:=25;
buyscrollcount:=1;
scrollname:=('blessed enchant weapon (grade c)');
scrollprice:=2000000;
inbase:=true;
end;
if scrollid=6574 then begin
scrolllistid:=559;
scrollentryid:=27;
buyscrollcount:=1;
scrollname:=('blessed enchant armor (grade c)');
scrollprice:=300000;
inbase:=true;
end;
if scrollid=6571 then begin
scrolllistid:=559;
scrollentryid:=29;
buyscrollcount:=1;
scrollname:=('blessed enchant weapon (grade b)');
scrollprice:=5000000;
inbase:=true;
end;
if scrollid=6572 then begin
scrolllistid:=559;
scrollentryid:=31;
buyscrollcount:=1;
scrollname:=('blessed enchant armor (grade b)');
scrollprice:=800000;
inbase:=true;
end;
if scrollid=6569 then begin
scrolllistid:=559;
scrollentryid:=33;
buyscrollcount:=1;
scrollname:=('blessed enchant weapon (grade a)');
scrollprice:=50000000;
inbase:=true;
end;
if scrollid=6570 then begin
scrolllistid:=559;
scrollentryid:=35;
buyscrollcount:=1;
scrollname:=('blessed enchant armor (grade a)');
scrollprice:=5000000;
inbase:=true;
end;
if scrollid=6577 then begin
scrolllistid:=559;
scrollentryid:=37;
buyscrollcount:=1;
scrollname:=('blessed enchant weapon (grade s)');
scrollprice:=100000000;
inbase:=true;
end;
if scrollid=6578 then begin
scrolllistid:=559;
scrollentryid:=39;
buyscrollcount:=1;
scrollname:=('blessed enchant armor (grade s)');
scrollprice:=10000000;
inbase:=true;
end;
//### item base ###
//*** stuff ***
if itemid=4707 then begin
itemlistid:=576;
itementryid:=3;
buyitemcount:=100;
itemname:=('coin of luck');
itemprice:=1000000;
end;
//*** end of base ***
if inbase=false then begin
stats.lines.add('неизвестный: '+inttostr(itemid));
stats.lines.add('неизвестный: '+inttostr(scrollid));
end;
end;
//..............................................................................
//******************************************************************************
procedure buyscroll;
begin
if inbase then begin
// if not scrollwindowopened then begin
requestbypasstoserver('menu_select?ask=-303&reply=559');
delay(500); // ждем открытия диалога
// scrollwindowopened:=true;
// labelbd.caption:='scroll';
// end;
// if scrollwindowopened then begin
delay(buydelay);
requestmultisellitem(scrolllistid, scrollentryid, buyscrollcount);
delay(buydelay);
// scrollwindowopened:=true;
// end;
end;
end;
//******************************************************************************
procedure buyitems(emptyslots: Integer);
var
cnt, ioa: Integer;
begin
if inbase then begin
adenacounter(colchangecount, canchange, canbuy);
colchange;
targetattacker('roy', royoid);
adenacounter(colchangecount, canchange, canbuy);
ioa:=(trunc(adena/itemprice));
requestbypasstoserver('menu_select?ask=-303&reply='+inttostr(itemlistid));
delay(500); // ждем открытия диалога
if (ioa>emptyslots) then begin
for cnt:=1 to emptyslots do begin
requestmultisellitem(itemlistid, itementryid, buyitemcount);
delay(buydelay);
end;
end else begin
for cnt:=1 to ioa do begin
requestmultisellitem(itemlistid, itementryid, buyitemcount);
delay(buydelay);
end;
end;
end;
end;
//******************************************************************************
procedure autobuy;
var
cnt, ioa, ioacount: Integer;
begin
adenacounter(colchangecount, canchange, canbuy);
ioa:=(trunc(adena/itemprice));
ioacount:=(trunc(emptyslots/ioa));
stats.lines.add('ioa: '+inttostr(ioa));
delay(100);
targetattacker('roy', royoid);
requestbypasstoserver('menu_select?ask=-303&reply='+inttostr(itemlistid));
// stats.lines.add('ждем открытия диалога');
delay(500); // ждем открытия диалога
for cnt:=1 to ioa do begin
requestmultisellitem(itemlistid, itementryid, buyitemcount);
delay(buydelay);
end;
curenchlvl:=0;
edit2.text:=inttostr(curenchlvl);
editbuydelay.enabled:=false;
end;
//******************************************************************************
procedure adenacounter(var colchangecount: Integer; var canchange, canbuy: Boolean);
begin
if (adena>=2000000000) then canchange:=false;
if (adena<=1900000000) then begin
colchangecount:=(20-trunc((adena/1000000)/100));
canchange:=true;
end;
if ((adena-(itemprice*emptyslots))>1) then canbuy:=true;
end;
//******************************************************************************
procedure colchange;
var
alid, aeid, acnt: Integer;
cnt, colchangecount: Integer;
begin
targetattacker('winnie', winnieoid);
delay(50);
adenacounter(colchangecount, canchange, canbuy);
alid:=576;
aeid:=3;
acnt:=100;
if canchange then begin
buttonchangeadena.enabled:=false;
buttonchangeadena.caption:=('обмениваем '+inttostr(colchangecount*100)+' col');
//вызов диалога обмена
requestbypasstoserver('menu_select?ask=-303&reply=576');
delay(500); //ждем открытия диалога
for cnt:=1 to colchangecount do begin
requestmultisellitem(alid, aeid, acnt);
delay(buydelay);
end;
end;
delay(50);
targetattacker('roy', royoid);
end;
//******************************************************************************
//..............................................................................
// закупка
procedure shoping(sender: Tobject);
begin
timer.enabled:=false;
change.enabled:=false;
if needtobuy then exit; //если еще не обменяли предыдущую вещь, то выходим сразу
if (royoid=0) then begin //(royoid=0) or
shops.enabled:=false; //останавливаем торговлю
stats.lines.add('не определены oid! требуется отбежать подальше и вернуться.');
exit; //выходим
end;
adenacounter(colchangecount, canchange, canbuy);
if (adena<itemprice) then begin
shops.enabled:=false; //останавливаем торговлю
stats.lines.add('не хватает денег.');
needtochange:=true;
// shops.enabled:=true;
exit;
end;
if (emptyslots<=2) then begin //проверка на выход из массива
shops.enabled:=false; //останавливаем торговлю
targetattacker('roy', royoid); //таргет
msg.lines.add('всё закупили!');
curenchlvl:=0;
edit2.text:=inttostr(curenchlvl);
editbuydelay.enabled:=false;
timer.enabled:=true;
end
else
begin
msg.lines.add('цель roy >');
targetattacker('roy', royoid); //таргет
msg.lines.add('готовы обменять: '+inttostr(emptyslots-2));
needtobuy:=true; //готовы обменивать
end;
end;
//..............................................................................
//..............................................................................
// обмен
procedure onchange(sender: Tobject);
begin
timer.enabled:=false;
shops.enabled:=false;
if needtochange then exit; //если еще не обменяли предыдущую вещь, то выходим сразу
if (winnieoid=0) then begin //(royoid=0) or
change.enabled:=false; //останавливаем торговлю
stats.lines.add('не определены oid! требуется отбежать подальше и вернуться.');
exit; //выходим
end;
adenacounter(colchangecount, canchange, canbuy);
if (adena>=2000000000) then begin //проверка на выход из массива
change.enabled:=false; //останавливаем торговлю
targetattacker('roy', royoid); //таргет
msg.lines.add('всё обменяли!');
timer.enabled:=true;
end
else
begin
msg.lines.add('цель winnie >');
targetattacker('winnie', winnieoid); //таргет
msg.lines.add('готовы обменять: '+inttostr(colchangecount));
needtochange:=true; //готовы обменивать
end;
end;
//..............................................................................
//******************************************************************************
procedure createitembase; //пакет 1b, создает базу objectid по itemid
//1b=itemlistpacket:w(window)w(listcount)w(itemtype1)h(objectid)i(itemid)
//d(count)w(itemtype2)w(custtype1)w(isequipped)d(bodypart)w(enchantlevel)
//w(custtype2)d(augment)d(--)
var
i, j, listcount: Integer;
begin
for i:=1 to max do begin
//очищаем масив
itembase[1,i]:=0; //oid
itembase[2,i]:=0; //id
itembase[3,i]:=0; //kol-vo
itembase[4,i]:=0; //lvl
end;
j:=4; //смещение для listcount
listcount:=readh(j); //количество итемов не должно превышать max!
Emptyslots:=(max-listcount);
stats.lines.add('свободно слотов: '+inttostr(emptyslots));
//if listcount>maxitems then msg.lines.add('внимание! не все вещи влезли в массив. Listcount>max='+inttostr(listcount)+'/'+inttostr(maxitems));
j:=8; //смещение для objectid
//пробегаем по инвентарю и сохраняем objectid соответствующие необходимым itemid
for i:=1 to listcount do begin
itembase[1,i]:=readd(j); //oid
itembase[2,i]:=readd(j); //itemid
itembase[3,i]:=readd(j); //кол-во
inc(j,10);
itembase[4,i]:=readh(j);//enchantlevel
// msg.lines.add('i='+inttostr(i)+' itemoid='+inttostr(itembase[1,i])+' itemid='+inttostr(itembase[2,i])+' itemkol='+inttostr(itembase[3,i])+' itemlvl='+inttostr(itembase[4,i]));
if interlude then inc(j,12) else inc(j,4);
//msg.lines.add('j='+inttostr(j));
if itembase[2,i]=57 then begin
adena:=itembase[3,i];
if (adena>1000) then showadena.text:=(inttostr(trunc(adena/1000))+'k');
if (adena>1000000) then showadena.text:=(inttostr(trunc(adena/1000000))+'m');
// if (adena>1000000000) then showadena.text:=(inttostr(trunc(adena/10000000))+'g');
end;
if itembase[2,i]=4037 then begin
col:= itembase[3,i];
if (col>1000) then showcol.text:=(inttostr(trunc(col/1000))+'k');
if (col>10000000) then showcol.text:=(inttostr(trunc(col/1000000))+'m');
end;
end;
adenacounter(colchangecount, canchange, canbuy);
if not canchange then buttonchangeadena.enabled:=false;
if canchange then buttonchangeadena.caption:=('обменять '+inttostr(colchangecount*100)+' col');
//вносим изменения в чекбоксы
stringlist.clear;
try
for i:=1 to listcount do begin
try
//stringlist.add(itemsname[itembase[2,i]-1]); //записываем название вещей из инвентаря
stringlist.add(itemsname.values[inttostr(itembase[2,i])]); //записываем название вещей из инвентаря
except;
msg.lines.add('пропускаем! нет itemid='+inttostr(itembase[2,i])+' в itemsid.ini');
end
end;
except;
msg.lines.add('ошибка в createitembase->stringlist.add()');
msg.lines.add(inttostr(itembase[2,i]));
exit;
end;
if not checkboxitem.checked then begin //наполняем комбобокс
with comboboxitem do
begin
items.clear;
items.assign(stringlist);
itemindex:=0;
end;
end;
if not checkboxscroll.checked then begin //наполняем комбобокс
with comboboxscroll do
begin
items.clear;
items.assign(stringlist);
itemindex:=0;
end;
end;
stats.lines.add('roy oid: '+inttostr(royoid));
stats.lines.add('winnie oid: '+inttostr(winnieoid));
end;
//******************************************************************************
//27=inventoryupdate:w(count)w(1add2mod3remove)w(itemtype1)d(objectid)i(itemid)d(count)w(itemtype2)w(custype1)w(isequipped)d(bodypart)w(enchantlevel)w(custype2)-(8)
procedure inventoryupdate; //пакет 27, обновляет базу objectid по itemid
var
i, ii, j, itemoid, itemid, itemcount, listcount, updtype, itemlvl: Integer;
add : Boolean;
begin
add:=false;
listcount:=readh(2); //количество итемов
// emptyslots:=(max-listcount);
msg.lines.add('свободно слотов: '+inttostr(emptyslots));
//пробегаем по инвентарю и сохраняем пары objectid - lvl
j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удален
for ii:=1 to listcount do begin
updtype:=readh(j);
//inc(j,2);
readh(j); //itemtype1
itemoid:=readd(j); //objectid
itemid:=readd(j); //itemid
itemcount:=readd(j); //кол-во
inc(j,10);
itemlvl:=readh(j);
case updtype of
//добавлен
1: Begin
dec(emptyslots);
for i:=1 to max do begin
if (itembase[1,i]=0) and (add=false) then begin
itembase[1,i]:=itemoid;
itembase[2,i]:=itemid;
itembase[3,i]:=itemcount;
itembase[4,i]:=itemlvl;
msg.lines.add('добавили предмет!');
msg.lines.add('i='+inttostr(i)+' itemoid='+inttostr(itembase[1,i])+' itemid='+inttostr(itembase[2,i])+' кол-во='+inttostr(itembase[3,i])+' itemlvl='+inttostr(itembase[4,i]));
if itemid=57 then begin
adena:=itemcount;
if (adena>1000) then showadena.text:=(inttostr(trunc(adena/1000))+'k');
if (adena>1000000) then showadena.text:=(inttostr(trunc(adena/1000000))+'m');
// if (adena>1000000000) then showadena.text:=(inttostr(trunc(adena/10000000))+'g');
end;
if itemid=4037 then begin
col:=itemcount;
if (col>1000) then showcol.text:=(inttostr(trunc(col/1000))+'k');
if (col>10000000) then showcol.text:=(inttostr(trunc(col/1000000))+'m');
end;
add:=true;
end;
end;
end;
//изменен
2: Begin
for i:=1 to max do begin
if itembase[1,i]=itemoid then begin
itembase[2,i]:=itemid;
itembase[3,i]:=itemcount;
itembase[4,i]:=itemlvl;
msg.lines.add('изменяем параметры предмета!');
msg.lines.add('i='+inttostr(i)+' itemoid='+inttostr(itembase[1,i])+' itemid='+inttostr(itembase[2,i])+' кол-во='+inttostr(itembase[3,i])+' itemlvl='+inttostr(itembase[4,i]));
if itemid=57 then begin
adena:=itemcount;
if (adena>1000) then showadena.text:=(inttostr(trunc(adena/1000))+'k');
if (adena>1000000) then showadena.text:=(inttostr(trunc(adena/1000000))+'m');
// if (adena>1000000000) then showadena.text:=(inttostr(trunc(adena/10000000))+'g');
end;
if itemid=4037 then begin
col:=itemcount;
if (col>1000) then showcol.text:=(inttostr(trunc(col/1000))+'k');
if (col>10000000) then showcol.text:=(inttostr(trunc(col/1000000))+'m');
end;
end;
end;
end;
//удален
3: Begin
inc(emptyslots);
for i:=1 to max do begin
if itembase[1,i]=itemoid then begin
msg.lines.add('удаляем предмет!');
msg.lines.add('i='+inttostr(i)+' itemoid='+inttostr(itembase[1,i])+' itemid='+inttostr(itembase[2,i])+' кол-во='+inttostr(itembase[3,i])+' itemlvl='+inttostr(itembase[4,i]));
itembase[1,i]:=0;
itembase[2,i]:=0;
itembase[3,i]:=0;
itembase[4,i]:=0;
end;
end;
end;
end;
if interlude then inc(j,10) else inc(j,2);
//msg.lines.add('j='+inttostr(j));
end;
end;
//..............................................................................
//******************************************************************************
//находим в инвентаре предмет с itemid и возвращаем его objectid
function getitem(item:integer; lvl:integer) : Integer;
var
i : Integer;
begin
for i:=1 to max do begin
//находим подходящий предмет по itemid
if (itembase[2,i]=item) and (itembase[4,i]=lvl) then begin
//если нашли, то возвращаем objectid предмета
result:=itembase[1,i]; // itemoid
itemcount:=itembase[3,i];
//itemlvl:=itembase[4,i];
//msg.lines.add('<item='+inttostr(item)+' lvl='+inttostr(lvl)+'> i='+inttostr(i)+' itemoid='+inttostr(itembase[1,i])+' itemid='+inttostr(itembase[2,i])+' itemkol='+inttostr(itembase[3,i])+' itemlvl='+inttostr(itembase[4,i]));
exit;
end;
end;
//ничего не нашли
result:=0;
end;
//******************************************************************************
procedure useitem(objectid: Integer);
begin
buf:=#$14;
writed(objectid);
writed(0);
sendtoserverex(name);
end;
//******************************************************************************
function sumitem(item: Integer):integer;
var
sum, i: Integer;
begin
result:=0;
//находим подходящий предмет по itemid
for i:=1 to max do begin
if (itembase[2,i]=item) then begin
// msg.lines.add('нашли предмет itemoid='+inttostr(itembase[1,i])+' itemid='+inttostr(itembase[2,i])+' itemcol='+inttostr(itembase[3,i])+' enchantlvl='+inttostr(itembase[4,i]));
// msg.lines.add('i='+inttostr(i));
result:=result+itembase[3,i];
//inc(result);
end;
end;
end;
//******************************************************************************
procedure requestenchantitem(objectid: Integer);
begin
buf:=#$58;
writed(objectid);
sendtoserverex(name);
//*********** использовать чит с петом ************************
{ buf:=#$8b;
writed(objectid);
writed(1);
sendtoserverex(name);
} //***********
end;
//..............................................................................
//******************************************************************************
procedure userinfo; //обновление данных о себе
var
i: Word;
begin
myoid:=readd(18);
myx:=readd(2);
myy:=readd(6);
myz:=readd(10);
i:=22;
reads(i);
if interlude then inc(i, 48) else inc(i, 44);
end;
//******************************************************************************
procedure ontimer(sender: Tobject);
begin
edititemval.text:=inttostr(sumitem(itemid));
editscrollval.text:=inttostr(sumitem(scrollid));
if (adena<=99000000) then begin
stats.lines.add('деньги закончились! меняем...');
timer.enabled:=false;
needtochange:=true;
change.enabled:=true;
exit;
end;
if (curenchlvl>=strtoint(edit1.text)) then begin
stats.lines.add('sum '+inttostr(sumitem(itemid))+' lvl'+inttostr(curenchlvl)+' ed'+(edit1.text));
timer.enabled:=false;
//пакет requestitemlist
buf:=hstr('0f');
sendtoserverex(name);
delay(50);
stats.lines.add('достигнут требуемый уровень! закупаем...');
stats.lines.add('свободно слотов: '+inttostr(emptyslots));
if (emptyslots>0) then begin
buttonbuyitems.enabled:=true;
buttonbuyitems.caption:=((comboboxitem.text)+': '+inttostr(emptyslots)+'шт.');
end;
{ if (sumitem(itemid)>=10) and (curenchlvl>=strtoint(edit1.text)) then begin
stats.lines.add('max '+inttostr(maxenchlvl));
stats.lines.add('заточено 10шт '+inttostr(maxenchlvl)+' уровня!');
inc(maxenchlvl);
stats.lines.add('увеличиваем уровень: '+inttostr(maxenchlvl));
edit1.text:=(inttostr(maxenchlvl));
end; }
needtobuy:=true;
shops.enabled:=true;
exit;
end;
if (sumitem(itemid)<=strtoint(editkeepitems.text)) then begin
timer.enabled:=false;
buf:=hstr('0f');
sendtoserverex(name);
stats.lines.add('ограничение по поломкам - '+editkeepitems.text+'! закупаем...');
delay(50);
needtobuy:=true;
shops.enabled:=true;
end;
scrolloid:=getitem(scrollid,0);
if (scrolloid<=3) then begin
stats.lines.add('свитки закончились! покупаем...');
timer.enabled:=false;
//***** закупка заточек *
buyscroll;
//***********************
delay(50);
timer.enabled:=true;
//exit;
end;
useitem(scrolloid);
msg.lines.add('задействовали скролл scrollid='+inttostr(scrollid)+' scrolloid='+inttostr(scrolloid));
ready:=true; //готовы затачивать
end;
//==============================================================================
// вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
begin
//****************************************************************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//****************************************************************************
if needtochange and (winnieoid<>0) then begin
if (connectname=name) and fromserver then begin
case pck[1] of
#$0f: Begin
msg.lines.add('s>пакет npchtmlmessage #$0f');
msg.lines.add(inttostr(readd(4)));
if (readd(2)=winnieoid) then begin
//шлем запрос выбора пункта - продажа
//c21=requestbypasstoserver:s(cmd)
delay(350);
requestbypasstoserver('menu_select?ask=-303&reply=576');
msg.lines.add('c>пакет requestbypasstoserver');
end;
end;
//sd0=multiselllist:d(listid)d(page_beg)d(page_end)d(onpage)d(entrycount)d(entryid)b(?)w(prodcount)w(itemcount<)w(pitemid)d(?)w(ptype2)d(pcount)w(penchant)w(iitemid)w(itype2)d(icount)w(ienchant)
#$d0: Begin
msg.lines.add('s>пакет multiselllist #$d0');
delay(350);
requestmultisellitem(576, 3, 100);
needtochange:=false;
end;
end;
end;
end;
if needtobuy and (royoid<>0) then begin
if (connectname=name) and fromserver then begin
case pck[1] of
//s0f=npchtmlmessage:d(messageid)s(html)d(d)
#$0f: Begin
msg.lines.add('s>пакет npchtmlmessage #$0f');
if (readd(2)=royoid) then begin
delay(350);
requestbypasstoserver('menu_select?ask=-303&reply='+inttostr(itemlistid));
msg.lines.add('c>пакет requestbypasstoserver '+inttostr(itemlistid));
end;
end;
//sd0=multiselllist:d(listid)d(page_beg)d(page_end)d(onpage)d(entrycount)d(entryid)b(?)w(prodcount)w(itemcount<)w(pitemid)d(?)w(ptype2)d(pcount)w(penchant)w(iitemid)w(itype2)d(icount)w(ienchant)
#$d0: Begin
msg.lines.add('s>пакет multiselllist #$d0');
delay(350);
requestmultisellitem(itemlistid, itementryid, itemcount);
needtobuy:=false;
end;
end;
end;
end;
//****************************************************************************
if fromserver then case pck[1] of
//****************************************************************************
#$01: Begin // movebackwardtolocation
if readd(2) = myoid then begin
myx := readd(18);
myy := readd(22);
myz := readd(26);
end;
//stats.lines.add('x'+inttostr(myx)+', y'+inttostr(myy)+', z'+inttostr(myz));
end;
//**************************************************************************
#$04: Begin //пакет с инфой о моём чаре
//msg.lines.add('s>пакет userinfo #$04');
userinfo;
end;
//**************************************************************************
//пакет itemlist
#$1b: Createitembase; //создание базы предметов
//**************************************************************************
//если удалили предметы, стираем в базе предметов пары objectid - itemid
#$27: Inventoryupdate; //обновление базы
//**************************************************************************
#$16: Begin
objectid:=(readd(2));
//stats.lines.add('s> oid '+inttostr(objectid)+' id '+inttostr(readd(6)-kid));
// oid readd2 id readd6
if (royid=readd(6)-kid) then begin
royoid:=objectid;
stats.lines.add('roy oid: '+inttostr(royoid));
end;
if (winnieid=readd(6)-kid) then begin
winnieoid:=objectid;
stats.lines.add('winnie oid: '+inttostr(winnieoid));
end;
end;
//пакет chooseinventory
#$6f: If ready then begin //and (readd(2)=itemid)
timer.enabled:=false; //отключаем пока не найдем предмет для заточки
//***** закупка заточек *
if inbase then buyscroll;
//ищем подходящий предмет для заточки
repeat
itemoid:=getitem(itemid, curenchlvl);
if itemoid=0 then begin
inc(curenchlvl);
edit2.text:=inttostr(curenchlvl);
end;
until itemoid<>0;
//...................................................................
Msg.lines.add('пробуем улучшить itemid='+inttostr(itemid)+' itemoid='+inttostr(itemoid));
requestenchantitem(itemoid);
ready:=false;
timer.enabled:=true; //пока в тесте отключаем (вкл. после заточки предмета)
end;
#$81: If readd(2)=0 then curenchlvl:=0; //начнем с начала
end;
end.
 
Последнее редактирование:

ake11a

Пользователь
Регистрация
25 Июл 2011
Сообщения
8
Лайки
0
Баллы
0
мой самый любимый скрипт
[hide]
const
nik='xxxx';
enchant=30;

var
useitem, enchantitem: String;
count, currentench: Integer;
timer01: Ttimer;

procedure init;
begin
timer01:=ttimer.create(nil);
timer01.ontimer:[email protected];
timer01.enabled:=false;
timer01.interval:=500;
end;

procedure ontimer01(sender: Tobject);
begin
buf:=useitem;
sendtoserverex(nik);
buf:=enchantitem;
sendtoserverex(nik);
end;

procedure free;
begin
timer01.free;
count:=0;
currentench:=0;
end;

begin
if fromserver and (pck[1]=#$87) then case readd(2) of
0: Begin
currentench:=currentench+1;
if currentench=enchant then timer01.enabled:=false;
end;
2: Currentench:=0;
end;
if fromclient and (pck[1]=#$19) then useitem:=pck;
if fromclient and (pck[1]=#$5f) then enchantitem:=pck;
if fromclient and (pck=#$34#$02#$00#$00#$00) then
begin
pck:='';
timer01.enabled:=not(timer01.enabled);
end;
end.
[/hide]
 

Charlie

Забанен
Регистрация
7 Авг 2011
Сообщения
2
Лайки
0
Баллы
0
Половина из этих скриптов давным-давно не актуальны
Какой смысл был их выкладывать?
 

minister

Пользователь
Регистрация
25 Авг 2011
Сообщения
121
Лайки
0
Баллы
0
пати сам с собой очень даже актуален и работает везде и хорош флудить
/del
 
Сверху